Angular 2.4.4,TypeScript 2.1.5,PhpStorm 2017.2.1 我写这段代码:
const list = document.querySelectorAll('path.frame-zone');
list.forEach(() => {
但第二行用红线加下划线,TsLint报告在NodeListOf"类型上不存在"属性forEach;
但是,当我按住forEach
时,它会转到lib.es6.d.ts
,forEach
为interface NodeListOf<TNode extends Node>
宣布function.__name__
为什么它不会让我使用它?有什么问题?
答案 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');