TS использование HTMLElement вместо Node as HTMLElement

Дело в том, что TS возвращает node list после метода querySelectorAll. В дальнейшем при переборе в forEach приходится утверждать каждый элемент как HTMLElement для того, что-бы достучаться до таких методов как classList. Выглядит это так: (element as HTMLElement).previousElementSibling. А как сделать вот так element.previousElementSibling? Не понимаю.

Было:

const a = doc.querySelectorAll('.some').forEach((el) => (el as HTMLElement).classList.add('classes'));

Хочу чтобы стало:

const a = doc.querySelectorAll('.some').forEach((el) => el.classList.add('classes'));

Ответы (1 шт):

Автор решения: Denis Lopatin

querySelectorAll принимает параметр полиморфного типа, что-бы избавиться от проблемы можно написать следующее:

const a = document.querySelectorAll<HTMLElement>('.some')

или если нужно использовать в классах:

protected readonly elements: NodeListOf<HTMLElement>
→ Ссылка