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

JavaScript给已有对象新增属性报不存在及打印未定义错误如何解决

问题排查与解决

第一个报错:TS2339 属性'numOfGuests'不存在

产生原因

这个是TypeScript的类型检查报错。你初始化restaurant对象时没有定义numOfGuests属性,TS会自动推断该对象的类型结构,后续新增不存在于初始结构中的属性就会触发类型不匹配的提示。JavaScript原生语法本身是允许给对象动态新增属性的,这个报错不影响JS代码的实际运行,只是TS的类型校验提示。

解决方法

  • 如果你使用的是JavaScript文件(.js后缀):可以在报错行上方加// @ts-ignore忽略当前行的TS检查,或者在项目的tsconfig.json中关闭针对JS文件的类型校验。
  • 如果你使用的是TypeScript文件(.ts后缀):可以在定义restaurant时提前声明该属性的类型,比如给对象加类型标注const restaurant: {numOfGuests?: number, [key: string]: any} = {...},或者用类型断言const restaurant = {...} as any跳过类型校验。

第二个报错:Uncaught ReferenceError: numOfGuests is not defined

产生原因

numOfGuests不是全局/当前作用域下的独立变量,而是挂载在restaurant对象下的属性,直接访问numOfGuests相当于访问一个从未声明过的变量,自然会触发未定义的报错。

解决方法

打印时指定所属对象即可,修改代码为:

console.log(restaurant.numOfGuests);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:06:01