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
相关产品推荐
相关产品推荐

