TypeScript 提示错误 property does not exist on type Object 划红线
最近做项目尝试vue cli 3.0 + typescript 去搭建项目,也是一步步去学习,也有遇到各种问题焦头烂额,记录生活TypeScript 错误property does not exist on type Object可以正常打印出结果,但是编译报错,Eslint or Tslint 都会给它加一条小红线,强迫症看着贼难受在TypeScript中如果按JS的方式去获取对象属性,有时会提
最近做项目尝试vue cli 3.0 + typescript 去搭建项目,也是一步步去学习,也有遇到各种问题焦头烂额,记录生活
TypeScript 错误property does not exist on type Object
可以正常打印出结果,但是编译报错,Eslint or Tslint 都会给它加一条小红线,强迫症看着贼难受
在TypeScript
中如果按JS的方式去获取对象属性,有时会提示形如Property 'value' does not exist on type 'Object'
的错误。具体代码如下:
var obj: Object = Object.create(null);
obj.value = "value";//[ts] Property 'length' does not exist on type'Object'.
解决方法
1.将对象类型设置为any
这是是一种非常效率的解决办法,可以访问修改任何属性不会出现编译错误。具体代码如下:
var obj: any = Object.create(null);
obj.value = "value";
2.通过字符方式获取对象属性
这种方式有些hack
的感觉,但是依然能解决编译错误的问题。具体代码如下:
var obj: Object = Object.create(null);
obj["value"] = "value";
3.通过接口定义对象所具有的属性
虽然较为繁琐,但却是最提倡的一种解决方式。通过接口声明对象后,所具有的属性值一目了然。具体代码如下:
var obj: ValueObject = Object.create(null);
obj.value = "value";
interface ValueObject {
value?: string
}
4.使用断言强制执行
声明断言后,编译器会按断言类型去执行。具体代码如下:
var obj: Object = Object.create(null);
(obj as any).value = "value";
转载于:https://www.cnblogs.com/limbobark/p/10043769.html
更多推荐
所有评论(0)