Luk*_*uke 7 javascript casting nodelist typescript
因此,我使用 querySelectorAll 获取与选择器匹配的元素列表,并将它们存储在 NodeList 中。
然后,我使用 forEach 循环扫描 NodeList,此时每个 individualItem 的类型都是“Element”。
但是,我将这些 individualItems 输入到函数“doThing()”中,该函数期望 individualItem 的类型为“HTMLElement”(我正在使用打字稿)。我想知道是否有一些内置的 js 函数用于将“Element”类型转换为“HTMLElement”类型,或者如果没有,类似的函数可能是什么样子
const h = document.querySelectorAll(someClassString);
h.forEach(individualItem => {
individualItem.addEventListener(c.EVENT, () => doThing(individualItem));
}) Run Code Online (Sandbox Code Playgroud)
要输入 querySelectorAll 的输出,您可以这样做:
document.querySelectorAll<HTMLTableElement>('.mytable')
Run Code Online (Sandbox Code Playgroud)
既然您使用的是 TypeScript,为什么不将其转换为其他类型呢?在这里查看
const h = document.querySelectorAll(someClassString);
h.forEach(individualItem => {
individualItem.addEventListener(c.EVENT, () => doThing(individualItem as HTMLElement));
});
Run Code Online (Sandbox Code Playgroud)
编辑 2023
我不知道当我写这篇文章时我对 Typescript 的了解是否有限,或者这个功能是否还不可用,但正如 Ron Jonk 指出的那样,最优雅和可重用的解决方案是
const h = document.querySelectorAll(someClassString);
h.forEach(individualItem => {
individualItem.addEventListener(c.EVENT, () => doThing(individualItem as HTMLElement));
});
Run Code Online (Sandbox Code Playgroud)