TypeScript 对象类型的属性访问报错 / 给对象动态添加属性报错

TypeScript 对象类型的属性访问报错 / 给对象动态添加属性报错
let obj: object = {
  name: 'Jack',()
  age: 18
}
console.log(obj.name)  //报错1:类型“object”上不存在属性“name”。
console.log(obj["name"])  // 报错2:元素隐式具有 "any" 类型,因为类型为 ""name"" 的表达式不能用于索引类型 "{}"。

obj.name = "aaa"  //同报错1
obj["weight"] = 150  //同报错2

原因分析:
1.报错1 TypeScript并不知道某一个object类型上面有name属性。
2.报错2 字符串等数据类型作为索引报错。

解决方法:

  • 报错1
    1.可使用类型推断解决,声明时通过typescript的特性判断变量类型
let obj = {
  name: 'Jack',
  age: 18
}
  • 报错2
  1. 采用Typescript中的接口Interface
interface LooseObject {
    [key: string]: any
}
let obj: LooseObject = {
  name: 'Jack',
  age: 18
};
obj.height = 150;   //给对象增加属性
  1. 在项目中的tsconfig.json文件中添加
 "suppressImplicitAnyIndexErrors":true,
  1. 使用万能的any
let obj: any = {
  name: 'Jack',
  age: 18
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容