将以下代码转换为打字稿时出现错误。
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; }'
答案 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');
希望这有帮助。