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
}

你可能感兴趣的:(TypeScript 对象类型的属性访问报错 / 给对象动态添加属性报错)