You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么TypeScript会将导入的JSON文件内容识别为空对象

问题原因

TypeScript将导入的JSON识别为空对象{}是配置问题导致的,具体原因如下:

  • 你没有在tsconfig.json中开启resolveJsonModule配置项。这个配置是TypeScript官方提供的JSON文件导入支持开关,未开启时TypeScript不会解析JSON文件的实际内容结构,会直接将所有导入的JSON文件的类型默认设置为{}。
  • 即使开启了resolveJsonModule,如果你的tsconfig.json的include字段没有覆盖到对应的JSON文件,TypeScript也无法读取JSON的内容推导类型,只会识别为空对象。
  • 空对象类型{}没有定义string类型的索引签名,自然不满足Record<string, unknown>的参数要求,就会抛出你遇到的类型报错。
修复方案

方案1(推荐,永久生效)

修改tsconfig.json,补全以下配置:

{
  "compilerOptions": {
    "resolveJsonModule": true, // 开启JSON导入类型解析
    "esModuleInterop": true // 兼容默认导入JSON的语法
  },
  "include": ["src/**/*", "config.json"] // 确保你的config.json在TS的解析范围内,按实际路径调整
}

配置生效后TypeScript会自动根据config.json的内容推导导入的data类型为{ attribute: string },完全兼容Record<string, unknown>的类型要求,报错会自动消失。

方案2(临时修复,无需改配置)

给导入的data手动增加类型断言,跳过类型校验:

import data from './config.json'
// 或者直接在传参时断言:this.initConfig(data as Record<string, unknown>)
const typedData = data as Record<string, unknown>

内容的提问来源于stack exchange,提问作者Slim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:27:03