在JavaScript / typescript中将Element转换为HTMLElement

t1qtbnec  于 2023-10-22  发布在  TypeScript
关注(0)|答案(2)|浏览(329)

所以,我使用querySelectorAll获取了一个匹配选择器的元素列表,它将它们存储在NodeList中。
然后我用forEach循环扫描NodeList,此时每个individualItem的类型都是“Element”。
然而,我将这些individualItem提供给一个函数“doThing()”,该函数期望individualItem的类型为“HTMLElement”(我使用的是typescript)。我想知道是否有一些内置的js函数将“Element”类型转换为“HTMLElement”类型,或者,如果没有,这样的函数看起来像什么

  1. const h = document.querySelectorAll(someClassString);
  2. h.forEach(individualItem => {
  3. individualItem.addEventListener(c.EVENT, () => doThing(individualItem));
  4. })
kxe2p93d

kxe2p93d1#

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

  1. document.querySelectorAll<HTMLTableElement>('.mytable')
fruv7luv

fruv7luv2#

既然你使用的是TypeScript,为什么不把它转换成其他类型呢?这里看到它

  1. const h = document.querySelectorAll(someClassString);
  2. h.forEach(individualItem => {
  3. individualItem.addEventListener(c.EVENT, () => doThing(individualItem as HTMLElement));
  4. });

编辑2023

我不知道是我写这篇文章的时候对Typescript的了解有限,还是这个功能还没有实现,但是正如罗恩琼克指出的,最优雅和可重用的解决方案是

  1. const h = document.querySelectorAll<HTMLElement>(someClassString);
  2. h.forEach(individualItem => {
  3. individualItem.addEventListener(c.EVENT, () => doThing(individualItem));
  4. });
展开查看全部

相关问题