繁体   English   中英

重载打字稿中的方法

[英]Overload a method in typescript

我有以下代码:

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

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

错误 TS2094:“元素”类型的值上不存在属性“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 ,你将需要转换结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM