所以我有以下代码:
document.querySelector('.edit').classList.add('hidden');
TypeScript告诉我querrySelector
返回的对象没有classList
作为方法,并出现以下错误:
error TS2094: The property 'classList' does not exist on value of type 'Element'.
当我查看querySelector返回的内容时,我发现它返回了Element。所以我不得不把它强制转换为HTMLElement,以便能够像这样使用classList:
(<HTMLElement>document.querySelector('.edit')).classList.add('hidden');
但是你可能会猜到,在某些时候它开始反效果,所以我问你:是否有任何理智的方式从querySelector获取classList?难道我做错了什么 ?我的猜测是我需要重载querySelector的定义。
谢谢
答案 0 :(得分:2)
这是lib.d.ts中的错误 - classList
应该是Element
的成员,而不是HTMLElement
,根据IDL。您可以编辑lib.d.ts以反映更改。
一般情况下,如果方法返回,例如一个Animal
但你知道在这种情况下它是Dog
,你需要投射结果。