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