在typescript中重载方法

时间:2013-12-05 20:29:30

标签: javascript typescript

所以我有以下代码:

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的定义。

谢谢

1 个答案:

答案 0 :(得分:2)

这是lib.d.ts中的错误 - classList应该是Element的成员,而不是HTMLElement,根据IDL。您可以编辑lib.d.ts以反映更改。

一般情况下,如果方法返回,例如一个Animal但你知道在这种情况下它是Dog,你需要投射结果。