在TypeScript中如果按JS的方式去获取对象属性,有时会提示形如Property ‘xxx’ does not exist on type 'Object’的错误。下文代码中的’xxx’替换成你的变量。
var obj: Object = Object.create(null);obj.xxx= "xxx";//[ts] Property 'xxx' does not exist on type'Object'.
这是因为Typescript在执行代码检查时在该对象没有定义相应属性,遇到该报错有以下几种解决方式:
1、将对象类型设置为any
这是是一种非常效率的解决办法,可以访问修改任何属性不会出现编译错误。
var obj: any = Object.create(null);obj.xxx= "xxx";
2、通过字符方式获取对象属性
这种方式有些强行的感觉,但是依然能解决编译错误的问题。
var obj: Object = Object.create(null);obj["xxx"] = "xxx";
3、通过接口定义对象所具有的属性
虽然较为繁琐,但却是最提倡的一种解决方式。通过接口声明对象后,所具有的属性值一目了然。
var obj: xxxObject = Object.create(null);obj.xxx= "xxx";interface xxxObject {xxx?: string}
4、使用断言强制执行
声明断言后,编译器会按断言类型去执行。
var obj: Object = Object.create(null);(obj as any).xxx= "xxx";