属性NodeListOf上不存在属性forEach

时间:2017-09-21 16:44:12

标签: angular typescript

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

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

但第二行用红线加下划线,TsLint报告在NodeListOf&#34;类型上不存在&#34;属性forEach; 但是,当我按住forEach时,它会转到lib.es6.d.tsforEachinterface NodeListOf<TNode extends Node>宣布function.__name__

为什么它不会让我使用它?有什么问题?

4 个答案:

答案 0 :(得分:52)

您需要将其转换为数组:

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

答案 1 :(得分:17)

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

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

答案 2 :(得分:6)

您可以对其进行强制转换,以使编译器知道可以对其进行迭代:

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

答案 3 :(得分:-1)

尝试施展它:

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

啊打字稿可能是这样的:

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