TypeScript 中的 resolveJsonModule

说明 resolveJsonModule 如何让 TypeScript 允许导入 JSON 文件并根据 JSON 静态结构生成类型。

#tech / dev #resource / typescript #type / concept #status / growing

[!info] related notes

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 片段
  • 本地配置文件
  • 静态枚举数据

参考信息

创建于 2026/5/15 更新于 2026/5/27