我在TS中挣扎与querySelectorAll
。我想用这个选择器访问任何HTML元素,不管它是按钮,输入等等。
对于querySelector
,我做了这样的事情(效果很好):
function selector(element: HTMLElement, selector: string): HTMLElement | null {
return element.querySelector(selector);
}
const element: HTMLElement | null = selector(document.body, '.my-button');
这是我对querySelectorAll
的类似方法:
function selectorAll(element: HTMLElement, selector: string): NodeListOf<HTMLElement> {
return element.querySelectorAll<HTMLElement>(selector);
}
现在我的问题是我不能初始化一个空的节点列表。例如:
let buttons: NodeListOf<HTMLElement> = [];
buttons = selectorAll(document.body, 'button');
编译器说:类型“never[]”中缺少属性“item”,但类型“NodeListElement”中需要该属性。
那么,初始化空NodeListOf
类型的正确语法是什么呢?
2条答案
按热度按时间wnavrhmk1#
除了调用
querySelectorAll
和相关的DOM API之外,没有其他简单的方法可以使用NodeList
接口创建对象。一种替代方法是使用array而不是
NodeList
。wnvonmuf2#
要让
return element.querySelectorAll<HTMLElement>(selector);
返回数组而不是NodeList,你可以这样写: