TypeScript 錯誤property does not exist on type Object


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";


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM