相关文章推荐
直爽的番茄  ·  AttributeError: ...·  11 月前    · 
失恋的薯片  ·  [特別篇] ...·  1 年前    · 
强健的鸭蛋  ·  java.io.IOException: ...·  1 年前    · 
鼻子大的日记本  ·  java - How to ...·  1 年前    · 
想出国的羽毛球  ·  html - Bootstrap - ...·  1 年前    · 
精彩文章免费看

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.可使用类型推断解决,声明时通过typescript的特性判断变量类型
let obj = {
  name: 'Jack',
  age: 18
  • 采用Typescript中的接口Interface
  • interface LooseObject {
        [key: string]: any
    let obj: LooseObject = {
      name: 'Jack',
      age: 18
    obj.height = 150;   //给对象增加属性
    
  • 在项目中的tsconfig.json文件中添加
  •  "suppressImplicitAnyIndexErrors":true,
    
  • 使用万能的any
  • let obj: any = {
      name: 'Jack',
      age: 18