Есть ли Array.from()
эквивалент в TypeScript ?
Или есть ли способ использовать реализацию Array.from()
, найденную в браузерах?
Я пытаясь преобразовать NodeList в массив для использования методов массива.
Это то, что я бы сделал с vanilla JavaScript:
const divs = document.querySelectorAll('div');
const arrDivs = Array.from(divs);
const result = arrDivs.map(e => {...});
Array.from()
недоступно в TypeScript , у него есть своя собственная реализация Array
.
Так что я думаю, что мне пришлось бы привести его к Element[]
или HTMLElement[]
следующим образом:
const arrDivs = <HTMLElement[]>divs;
Но затем я получаю следующую ошибку:
Преобразование типа 'NodeListOf' в тип 'HTMLElement []' может быть ошибкой, поскольку ни один тип не совпадает в достаточной степени с другим. Если это было сделано намеренно, сначала преобразуйте выражение в «неизвестное». Типу 'NodeListOf' не хватает следующих свойств из типа 'HTMLElement []': pop, pu sh, concat, join и еще 14.
Итак, вместо этого мне сначала нужно наложить NodeList для unknown
, а затем для HTMLElement[]
:
const arrDivs = <HTMLElement[]><unknown>divs;
Это, похоже, игнорирует присущую безопасность типов TypeScript. Поэтому мне интересно, есть ли лучший или более правильный способ сделать это? Или какой-нибудь способ вызова встроенной функции Array.from()
, найденной в современных браузерах?
ОБНОВЛЕНИЕ
Мой компилятор сообщает мне, что Property 'from' does not exist on type 'ArrayConstructor'.
Вот мои Опции компилятора:
"compilerOptions": {
"sourceMap": true,
"outDir": "dist",
"strict": true,
// Linting rules:
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
}