简体   繁体   English

Typescript:初始化一个空的 NodeListOf

[英]Typescript: Initialize an empty NodeListOf

I am struggling in TS with querySelectorAll .我在 TS 中苦苦挣扎querySelectorAll I want to access any HTML element with this selector, no matter if it is a button, input and so on.我想使用此选择器访问任何 HTML 元素,无论它是按钮、输入等。

For querySelector I did something like this (which works fine):对于querySelector我做了这样的事情(效果很好):

function selector(element: HTMLElement, selector: string): HTMLElement | null {
    return element.querySelector(selector);
}

const element: HTMLElement | null = selector(document.body, '.my-button');

This is my similar method for querySelectorAll :这是我对querySelectorAll的类似方法:

function selectorAll(element: HTMLElement, selector: string): NodeListOf<HTMLElement> {
    return element.querySelectorAll<HTMLElement>(selector);
}

Now my issue is that I can not initialize an empty node list.现在我的问题是我无法初始化一个空节点列表。 For example:例如:

let buttons: NodeListOf<HTMLElement> = [];
buttons = selectorAll(document.body, 'button');

The compiler says: The property 'item' is missing in type 'never[]' but required in type 'NodeListElement'.编译器说: “never[]”类型中缺少属性“item”,但在“NodeListElement”类型中是必需的。

So what is the correct syntax for initializing an empty NodeListOf type?那么初始化空NodeListOf类型的正确语法是什么?

There is no easy way to create an object with the NodeList interface other than calling querySelectorAll and related DOM APIs.除了调用querySelectorAll和相关的 DOM API 之外,没有简单的方法可以使用NodeList接口创建 object。

One alternative is to use array instead of NodeList .一种替代方法是使用数组而不是NodeList

let buttons: Array<HTMLElement> = [];
buttons = Array.from(selectorAll(document.body, 'button'));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Typescript 初始化为空 object - Typescript initialize empty object Typescript,'NodeListOf<element> ' 不是数组类型或字符串类型</element> - Typescript,'NodeListOf<Element>' is not an array type or a string type 用 Record 类型初始化 typescript 中的空 object - Initialize empty object in typescript with Record type 初始化一个空的 typescript object,但定义它的属性 - Initialize an empty typescript object, but define it's properties 如何在 Typescript 中初始化一个空的对象数组? - How to initialize an empty array of objects in Typescript? 使用typescript别名时如何初始化空数组? - How do I initialize an empty array when using a typescript alias? Typescript:使用扩展数组时初始化空数组<t></t> - Typescript: initialize empty array when using extends Array<T> 使用来自 Typescript 接口的空键值初始化 object - Initialize an object with empty key values from a Typescript interface 当我尝试将打字稿代码编译为javascript时,得到** Type&#39;NodeListOf <Element> &#39;不是数组类型或字符串类型** - When i try to compile typescript code into javascript, getting **Type 'NodeListOf<Element>' is not an array type or a string type** Typescript 错误:'NodeListOf 类型的参数<htmlinputelement> | undefined' 不可分配给'Iterable'类型的参数<htmlinputelement> ……”</htmlinputelement></htmlinputelement> - Typescript Error: Argument of type 'NodeListOf<HTMLInputElement> | undefined' is not assignable to parameter of type 'Iterable<HTMLInputElement> ..."
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM