在 javascript / typescript 中将 Element 转换为 HTMLElement

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)

Ron*_*onk 8

要输入 querySelectorAll 的输出,您可以这样做:

document.querySelectorAll<HTMLTableElement>('.mytable')
Run Code Online (Sandbox Code Playgroud)


Gab*_*ima 5

既然您使用的是 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)