TypeScript 錯誤property does not exist on type Object
在TypeScript中如果按JS的方式去獲取對象屬性,有時會提示形如Property 'value' does not exist on type 'Object'的錯誤。具體代碼如下:
var obj: Object = Object.create(null);
obj.value = "value";//[ts] Property 'value' does not exist on type'Object'.
這是因為Typescript在執行代碼檢查時在該對象沒有定義相應屬性,遇到該報錯有以下幾種解決方式:
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";