有沒有一種方法,使打字稿不會拋出錯誤「TS2339:屬性值不上類型元素存在」對於這樣的代碼?:querySelector在打字稿
myRow.querySelector('.my-class').value = myVal
鑄造作爲< HTMLInputElement>原因碼完全打破。
Typescript似乎不能很好地處理涉及DOM的事情,除非我錯過了某些東西;即它可以選擇特定的一般函數來返回任何元素。
有沒有一種方法,使打字稿不會拋出錯誤「TS2339:屬性值不上類型元素存在」對於這樣的代碼?:querySelector在打字稿
myRow.querySelector('.my-class').value = myVal
鑄造作爲< HTMLInputElement>原因碼完全打破。
Typescript似乎不能很好地處理涉及DOM的事情,除非我錯過了某些東西;即它可以選擇特定的一般函數來返回任何元素。
querySelector方法返回Element | null
。
如果您不使用strictNullChecks
然後Element,並且它沒有value
成員。
所以它鑄造HTMLInputElement
正如我在評論中寫道作品:
let myRow = document.getElementById('my-row');
(myRow.querySelector('.myClass') as HTMLInputElement).value = " a vaule";
您收到的錯誤是在第一行的末尾忘記分號的結果,會發生什麼情況是,編譯器認爲你試圖這樣做:
document.getElementById('my-row')(myRow.querySelector('.myClass') as HTMLInputElement)
不要忘記用分號結束行。
謝謝;這樣可行。釘在分號上。你知道爲什麼這是必需的嗎? –
http://stackoverflow.com/questions/444080/do-you-recommend-using-semicolons-after-every-statement-in-javascript –
本頁內容:https://github.com/rse/es6-features 「ECMAScript 6和所有工具(包括壓縮器)都能夠完全支持當今的自動分號推理/插入,因此,ECMAScript 6編碼器現在可以擺脫幾乎所有的分號並從源代碼中移除混亂。」也就是說,在這個特定情況下需要分號很奇怪。 –
This:'(myRow.querySelector('。myClass')as HTMLInputElement).value = myVal' does not work? –
正確。這會產生錯誤:'2349:不能調用類型缺少呼叫簽名的快遞。' –
什麼是myRow? –