2017-08-24 119 views
0

我在將以下代碼轉換爲typescript時出現錯誤。Typescript:類型'null'不可分配給類型錯誤

const element = document.querySelector('#launcher'); 
if (element && element.style && element.style.display) { 
    element.style.display = ''; 
} 

錯誤TS2339:房產 '風格' 不上型 '元' 存在。

,當我分配爲相同的所需的值作爲像下面

const element: { style: any } = document.querySelector('#launcher'); 

則誤差是元件上,這是

錯誤TS2322:類型「元素| null'不可分配爲鍵入'{style:any; }」。 類型'null'不可分配爲鍵入'{style:any; }」。的Element

+0

嘗試使用var或let而不是const –

+0

可能重複的[querySelector in Typescript](https://stackoverflow.com/questions/43032004/queryselector-in-typescript) –

回答

2

document.querySelector回報實例。它的類型並沒有太多的declared。爲了修正這個錯誤 - 它轉換爲更具體的類型,例如:

const element = document.querySelector('#launcher') as HTMLInputElement; 
if (element && element.style && element.style.display) 
{ 
    element.style.display = ''; 
} 

基本上一切從HTMLElement繼承將做的工作。

+0

謝謝!這個對我有用 :) –

0

我會建議在聲明變量時給出特定的類型。

對於例如:你的情況querySelector返回值的類型「元素|空」 所以,你可以這樣定義

const element: Element = document.querySelector('#launcher'); 

希望這有助於你的元素變量。

相關問題