property - TypeScript | Array.from | error TS2339: la propiedad ''from'' no existe en el tipo ''ArrayConstructor''
property does not exist on type angular 5 (3)
Estaba buscando en Google, pero no puedo encontrar la información sobre qué y cómo debo agregar a mi proyecto para permitirme usar métodos ES6 como Array.from
__ EDITAR: palabra prototipo eliminado
Espero que no sea un tema demasiado tedioso, pero encontré esto mientras refactorizaba js a ts, y si tiene una matriz como, parece que funciona simplemente pasando la matriz como al constructor en lugar de usarla, eliminando la necesidad del método adicional.
p.ej
// someScript.js
Array.from( arrayLikeThing );
se convierte en
// someScript.ts
Array( arrayLikeThing );
Si hay otras razones para seguir usando .from, entonces las respuestas anteriores son excelentes.
Puede ampliar fácilmente los tipos existentes de esta manera:
interface Array {
from(arrayLike: any, mapFn?, thisArg?): Array<any>;
}
El problema aquí es que esto agregará la función a las instancias de la matriz y no como una función estática como usted lo requiere.
Pero eso se puede hacer así:
interface ArrayConstructor {
from(arrayLike: any, mapFn?, thisArg?): Array<any>;
}
Entonces deberías poder usar Array.from
.
Pruébalo en Playground .
Editar
Si necesita realizar un relleno múltiple de la implementación (debido a que el entorno en el que desea ejecutar no lo tiene), así es como:
interface ArrayConstructor {
from(arrayLike: any, mapFn?, thisArg?): Array<any>;
}
Array.from = function(arrayLike: any, mapFn?, thisArg?): Array<any> {
// place code from MDN here
}
El código de polyfill en MDN .
2ª edición
Basado en un comentario, estoy agregando una versión mecanografiada:
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>;
}
Es una copia exacta de cómo se define en lib.es6.d.ts
Si está seguro de que la API existe en su motor en tiempo de ejecución, compile con --lib es6
(o --lib dom, es6
si está utilizando las API de DOM)
Consulte la documentación de las Opciones del compilador para más detalles.