typescript 类型NodeListOf上不存在forEach属性

yks3o0rb  于 2023-06-07  发布在  TypeScript
关注(0)|答案(5)|浏览(166)

Angular 2.4.4,TypeScript 2.1.5,PhpStorm 2017.2.1我写的代码:

const list = document.querySelectorAll('path.frame-zone');
list.forEach(() => {

但是第二行用红线下划线,TsLint报告“property forEach doesn’t exist on type NodeListOf”但是当我ctrl+单击forEach时,它会让我看到lib.es6.d.ts,其中forEach是为interface NodeListOf<TNode extends Node>声明的
为什么不让我用?怎么了?

z4iuyo4d

z4iuyo4d1#

你需要把它转换成一个数组:

const frameZones = Array.from(document.querySelectorAll('path.frame-zone'));
frameZones.forEach((...) => {});
lhcgjxsq

lhcgjxsq2#

只需将"dom.iterable"添加到tsconfig.json,使其看起来有点像这样:

{
    "compilerOptions": {
        "lib": [
            "es6",
            "dom",
            "dom.iterable"
        ],
...
thtygnil

thtygnil3#

你可以强制转换它,让编译器知道它可以迭代:

(document.querySelectorAll('path.frame-zone') as any as Array<HTMLElement>).forEach();
2o7dmzc5

2o7dmzc54#

你有没有试过用NodeListOf<HTMLDivElement>来铸造你的document.querySelectorAll('path.frame-zone');

vd8tlhqk

vd8tlhqk5#

试着把它投进去:

const list = (NodeListOf) document.querySelectorAll('path.frame-zone');

打印脚本可能是这样的:

const list = <NodeListOf> document.querySelectorAll('path.frame-zone');

相关问题