TypeScript 中的 resolveJsonModule
说明 resolveJsonModule 如何让 TypeScript 允许导入 JSON 文件并根据 JSON 静态结构生成类型。
#tech / dev
#resource / typescript
#type / concept
#status / growing
[!info] related notes
- 所属 MOC: TypeScript MOC
- 配置入口: tsconfig 使用详解
- 并列概念: TypeScript 中的 moduleResolution, TypeScript 中的 module
TypeScript 中的 resolveJsonModule
一句话定义
resolveJsonModule 允许 TypeScript 把 .json 文件当成可导入模块处理,并根据 JSON 的静态内容推导类型。
核心机制 / 工作原理
官方文档明确说明,TypeScript 默认并不支持解析 JSON 模块。
例如:
import settings from "./settings.json";
默认会报:
- 找不到对应模块或类型声明
开启:
{
"compilerOptions": {
"resolveJsonModule": true
}
}
之后,TypeScript 不仅允许这条导入,还会根据 JSON 的静态 shape 推出类型。
最小例子 / 最小场景
{
"repo": "TypeScript",
"dry": false,
"debug": false
}
import settings from "./settings.json";
settings.debug;
settings.dry;
这时 settings.dry 会被理解成 boolean,而不是任意值。
边界与易混淆点
它解决的是“TypeScript 是否认这个导入”
也就是:
.json文件能不能被当成模块导入- JSON 导入后的类型如何被理解
它不等于“任何运行时都天然支持 JSON import”
TypeScript 接受这个写法,不代表你的运行时、bundler、Node 模式一定都按同样方式工作。
仍然需要看:
- 当前 runtime
- bundler
module/moduleResolution
它很常见于配置文件、元数据文件和静态数据
例如:
package.json片段- 本地配置文件
- 静态枚举数据
参考信息
- TSConfig
resolveJsonModule: https://www.typescriptlang.org/tsconfig/resolveJsonModule.html