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

如何在TypeScript中为带type选项的JSON导入指定类型?

解决TypeScript识别JSON导入类型的问题

你用的是TypeScript 5.0+的JSON模块断言导入语法(with { type: 'json' }),这种情况下单独创建icons.d.ts或icons.json.d.ts的常规方法不生效,得用TS的模块声明来处理,具体操作如下:

  • 创建全局JSON模块声明文件
    在项目根目录或src文件夹下新建一个.d.ts文件(比如命名为json-types.d.ts),写入以下代码:

    declare module '*.json' {
      // 根据你的icons.json实际结构定义类型,通用键值对用Record<string, string>,结构固定则写精确类型
      const value: Record<string, string>;
      export default value;
    }
    

    举个例子,如果你的icons.json结构是:

    {
      "home": "/icons/home.svg",
      "settings": "/icons/settings.svg"
    }
    

    可以把类型写得更精准:

    declare module '*.json' {
      const value: {
        home: string;
        settings: string;
      };
      export default value;
    }
    
  • 确保TS能扫描到声明文件
    打开tsconfig.json,检查include数组包含了该.d.ts文件的路径。如果文件在根目录,就添加"json-types.d.ts";如果在src文件夹下,"src/**/*"已经能覆盖到:

    {
      "include": ["src/**/*", "json-types.d.ts"]
    }
    
  • 清理无效的旧声明文件
    删除之前创建的/icons.d.ts和/icons.json.d.ts,避免和全局JSON模块声明冲突。

如果嫌全局声明麻烦,也可以直接在导入时用类型断言(虽然不如前者优雅):

import icons from '/icons.json' with { type: 'json' } as unknown as {
  home: string;
  settings: string;
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 23:42:08