打字稿:输入' null'不能分配给类型错误

时间:2017-08-24 09:15:45

标签: node.js reactjs typescript

将以下代码转换为打字稿时出现错误。

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

错误TS2339:属性'样式'类型'元素'上不存在。

当我分配所需的值时,如下所示

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

然后错误在元素上,那是

  

错误TS2322:输入'元素|空'不能分配给' {style:any; }&#39 ;.     输入' null'不能分配给' {style:any; }'

2 个答案:

答案 0 :(得分:3)

document.querySelector返回Element的实例。并且在它的输入中没有太多declared。为了修复错误 - 将其转换为更具体的类型,例如:

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

基本上所有从HTMLElement继承的东西都可以胜任。

答案 1 :(得分:0)

我建议在声明变量时给出特定类型。

例如:在您的情况下,querySelector返回类型'元素| null'的值。 因此,您可以像这样定义元素变量

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

希望这有帮助。