2017-08-24 89 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'); 

希望这有助于你的元素变量。

相关问题