TypeScript / Array.from / error TS2339: свойство "from" не существует для типа "ArrayConstructor"
я гуглил, но не могу найти информацию, что и как я должен добавить в свой проект, чтобы позволить мне использовать методы ES6, такие как Array.from
_ _ EDIT: удален прототип word
2 ответов
вы можете легко расширить существующие типы вроде так:
interface Array {
from(arrayLike: any, mapFn?, thisArg?): Array<any>;
}
проблема здесь в том, что это добавит функцию к экземплярам массива, а не как статическую функцию, как вам требуется.
Но это можно сделать так:
interface ArrayConstructor {
from(arrayLike: any, mapFn?, thisArg?): Array<any>;
}
тогда вы должны иметь возможность использовать Array.from
.
на площадка.
редактировать
Если вам нужно polyfill реализация (потому что окружающая среда в который вы собираетесь запустить, не имеет его), то вот как:
interface ArrayConstructor {
from(arrayLike: any, mapFn?, thisArg?): Array<any>;
}
Array.from = function(arrayLike: any, mapFn?, thisArg?): Array<any> {
// place code from MDN here
}
2-е изд
основываясь на комментарии, я добавляю типизированную версию:
interface ArrayConstructor {
from<T, U>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): Array<U>;
from<T>(arrayLike: ArrayLike<T>): Array<T>;
}
это точная копия того, как она определена в lib.es6.d.ts.
Если вы уверены, что API существует на вашем движке во время выполнения, скомпилируйте с --lib es6
(или --lib dom, es6
Если вы используете API DOM)
посмотреть параметры компилятора документации для получения более подробной информации.