javascript - 在 typescript 中重载方法

标签 javascript typescript

我有以下代码:

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

TypeScript 告诉我 querySelector 返回的对象没有 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 的定义。

谢谢

最佳答案

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

一般来说,如果一个方法返回例如Animal 但您知道它是 Dog 在这种情况下,您需要转换结果。

关于javascript - 在 typescript 中重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20410038/

相关文章:

javascript - 使用 Node SSL 将客户端证书设为可选(rejectUnauthorized : true doesn't do it? )

f# - 实现 F# 库以供 TypeScript/Javascript 使用?

javascript - 如果对象键在 typescript 中是动态的,如何获取值(value)?

TypeScript set string = null 失败,但是 null!作品

javascript - 无法运行 typescript 构建任务: 'C:\Program' is not recognized as an internal or external command

angularjs - Angular 和 Typescript 内存泄漏

javascript - 如何修复我的 React 应用程序中的 eslint 错误 'pendo is not defined'

javascript - 为什么 Application Insights 在 Firefox 上被阻止为 CORS?

javascript - 根据屏幕宽度显示和隐藏 Bootstrap Navbar 的按钮

javascript - 将 XPath 与 CasperJS 结合使用