Ответ 1
Вам нужно преобразовать его в массив:
const frameZones = Array.from(document.querySelectorAll('path.frame-zone'));
frameZones.forEach((...) => {});
Angular 2.4.4, TypeScript 2.1.5, PhpStorm 2017.2.1 Я пишу этот код:
const list = document.querySelectorAll('path.frame-zone');
list.forEach(() => {
Но вторая строка подчеркнута красной линией, а TsLint сообщает, что "свойство forEach не существует в типе NodeListOf"
Но когда я нажимаю Ctrl + нажимаю forEach
, он возвращает меня к lib.es6.d.ts
, где forEach
объявляется для interface NodeListOf<TNode extends Node>
Почему это не позволит мне использовать его? Что не так?
Вам нужно преобразовать его в массив:
const frameZones = Array.from(document.querySelectorAll('path.frame-zone'));
frameZones.forEach((...) => {});
Просто добавьте "dom.iterable"
в tsconfig.json
, чтобы он выглядел примерно так:
{
"compilerOptions": {
"lib": [
"es6",
"dom",
"dom.iterable"
],
...
попробуйте сделать это:
const list = (NodeListOf) document.querySelectorAll('path.frame-zone');
ah typescript может быть примерно так:
const list = <NodeListOf> document.querySelectorAll('path.frame-zone');
Вы можете привести его, чтобы компилятор знал, что он может быть повторен:
(document.querySelectorAll('path.frame-zone') as any as Array<HTMLElement>).forEach();