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

TypeScript应用报Cannot find name 'JSON'.ts(2304)如何解决?

TypeScript 报错 Cannot find name 'JSON'.ts(2304) 解决方案

最优方案:优化代码逻辑,移除不必要的JSON操作

你当前的代码需要把表单返回的state、country对象替换为对应的name字符串,不需要用JSON.parse(JSON.stringify)做深拷贝,直接展开对象覆盖对应字段即可,既规避了报错,性能也更优,全程保留es2018配置无需修改:

// 填充purchase的customer字段
purchase.customer = this.checkoutFormGroup.controls['customer'].value;
// 填充purchase的配送地址字段
const rawShippingAddress = this.checkoutFormGroup.controls['shippingAddress'].value;
purchase.shippingAddress = {
  ...rawShippingAddress,
  state: rawShippingAddress.state.name,
  country: rawShippingAddress.country.name
};

如需要保留JSON相关写法,按以下步骤排查配置

  • 检查tsconfig.json的compilerOptions节点下是否配置了"noLib": true,如果有该配置项直接删除即可:该配置会禁用所有JS标准库的类型定义,导致找不到JSON、Array等全局对象的类型声明。
  • 确认你修改的是项目实际生效的tsconfig配置:Angular、Vite等脚手架项目通常存在多级tsconfig(比如tsconfig.app.json、tsconfig.node.json),需要修改业务代码对应的配置文件,确保lib数组包含es2015及以上版本的ES标准库,你当前的es2018配置本身是符合要求的。
  • 重启IDE的TypeScript语言服务:VSCode按下Ctrl+Shift+P(Mac系统为Cmd+Shift+P),输入「TypeScript: Restart TS Server」执行重启,大部分场景下是IDE类型服务缓存导致的误报。
  • 特殊场景可在报错文件顶部增加三斜线指令,手动引入ES标准库类型:
    /// <reference lib="es2015" />
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:36:02