打字稿:类型“null”不可分配给类型错误

Suh*_*vad 1 node.js typescript reactjs

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

const element = document.querySelector('#launcher');
if (element && element.style && element.style.display) {
    element.style.display = '';
}
Run Code Online (Sandbox Code Playgroud)

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

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

const element: { style: any } = document.querySelector('#launcher');
Run Code Online (Sandbox Code Playgroud)

那么错误就在元素上,那就是

错误 TS2322:键入“元素 | null' 不可分配给类型 '{ style: any; }'。类型 'null' 不能分配给类型 '{ style: any; }'。

Ami*_*mid 5

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

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

基本上从HTMLElement继承的所有东西都可以完成这项工作。