[英]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.