querySelectorAll
не возвращает HTMLCollection
, но NodeList
. Нет смысла пытаться преобразовать NodeList
в HTMLCollection
. Вы можете сделать это, хотя:
let $inputsCollection: NodeListOf<HTMLInputElement> =
document.body.querySelectorAll('input');
Дело выше использует HTMLInputElement
поэтому все элементы в списке должны быть из input
элементов в HTML. Для случаев, когда вы получите разнородные элементы из запроса, вы можете сделать:
let $inputsCollection: NodeListOf<Element> =
document.body.querySelectorAll('*');
Это даже позволяют другие типы узлов, чем Element
объектов, хотя querySelectorAll
не может возвращать такие узлы:
let $inputsCollection2: NodeList = document.body.querySelectorAll('*');
FYI, методы, которые возвращают HTMLCollection
объекты являются .getElementsBy...
семейство методов (.getElementsByClassName
, .getElementsByTagName
и т.д.)
Это потому, что [querySelectorAll] (https: //github.c om/Microsoft/TypeScript/blob/master/lib/lib.d.ts # L16786) возвращает 'NodeListOf', а не 'HTMLCollection'. Вы не можете использовать 'NodeListOf'? –
@NitzanTomer Спасибо человеку! – Smiranin