TypeScript 對象類型的屬性訪問報錯 / 給對象動態(tài)添加屬性報錯
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 字符串等數(shù)據(jù)類型作為索引報錯姐刁。
解決方法:
- 報錯1
1.可使用類型推斷解決芥牌,聲明時通過typescript的特性判斷變量類型
let obj = {
name: 'Jack',
age: 18
}
- 報錯2
- 采用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
}