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
}

полифилл-код в MDN.


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)

посмотреть параметры компилятора документации для получения более подробной информации.