在typescript中重载一个方法



我有以下代码:

document.querySelector('.edit').classList.add('hidden');

TypeScript告诉我querySelector返回的对象没有classList作为方法,错误如下:

错误TS2094:"Element"类型的值上不存在属性"classList"。

当我查看querySelector返回的内容时,我发现它返回Element。所以我不得不把它转换成HTMLElement,以便能够像这样使用classList:

(<HTMLElement>document.querySelector('.edit')).classList.add('hidden');

但正如你可能猜测的那样,在某个时候,它开始适得其反,所以我问你:有什么合理的方法可以从querySelector中获取classList吗?我做错什么了吗?我的猜测是,我需要重载querySelector的定义。

感谢

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

不过,通常情况下,如果一个方法返回例如Animal,但您知道在这种情况下它是Dog,则需要强制转换结果。

最新更新