javascripttypescriptcastingnodelist

Converting Element to HTMLElement in javascript / typescript


So, I'm getting a list of elements that match a selector using querySelectorAll, which stores them in a NodeList.

I'm then scanning through the NodeList with a forEach loop, at which point the type of each individualItem is "Element".

However, I'm feeding these individualItems into a function "doThing()" that expects individualItem to be of type "HTMLElement" (I'm using typescript). I'm wondering if there is some built in js function for converting an "Element" type into an "HTMLElement" type, or, if not, what a function like that might looks like

const h = document.querySelectorAll(someClassString);

h.forEach(individualItem => {
            individualItem.addEventListener(c.EVENT, () => doThing(individualItem));
})    


Solution

  • To type the output from querySelectorAll you can do it this way:

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