Typescript 属性在类型 {} 上不存在

新手上路,请多包涵

我在 Typescript 中有以下代码。为什么编译器会抛出错误?

 var object = {};
Object.defineProperty(object, 'first', {
     value: 37,
     writable: false,
     enumerable: true,
     configurable: true
});
console.log('first property: ' + object.first);

js.ts(14,42):错误 TS2339:属性“first”在类型“{}”上不存在。

它与 mozilla 文档(示例部分)中的代码片段相同。

原文由 user2685879 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

另一种方法是做接口,这样编译器就会知道属性存在。

 interface IFirst{
  first:number;
}

let object = {} as IFirst;
Object.defineProperty(object, 'first', {
  value: 37,
  writable: false,
  enumerable: true,
  configurable: true
});
console.log('first property: ' + object.first);

看看这个问题 How to customize properties in TypeScript

原文由 Vayrex 发布,翻译遵循 CC BY-SA 3.0 许可协议

使对象类型为 any

 var object: any = {};

原文由 Emmanuel Osimosu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题