Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

225
Visualizações
flatMap, flat, flatten no existe en tipo any[]

Estoy usando Chrome 70 y Chrome agrega métodos .flatMap , .flatten , .flat . Entonces mi código se ejecuta como se esperaba. Desafortunadamente, a TypeScript no le gusta.

 // data.flatMap lint error export const transformData = (data: any[]) => data.flatMap(abc => [ parentObj(abc), ...generateTasks(abc) ]);

La advertencia que recibí es TS2339: Property 'flatMap' does not exist on type 'any[]'.

Estoy usando Angular 6, que usa Typescript ~2.9.2, y ya import 'core-js/es7/array'; en polyfills.ts .

Supongo que no hay escritura para estos métodos, y traté de npm run -dev @types/array.prototype.flatmap pero aún no lo resolví.

over 4 years ago · Santiago Trujillo
7 Respostas
Responde à pergunta

0

Intenté la mayoría de las respuestas y no me funcionaron. IDE: código VS

pero esto hizo

 npm i -D @types/node
over 4 years ago · Santiago Trujillo Relatório

0

También puede agregar esnext a su --lib en lugar de 'es2019'

 "compilerOptions": { "target": "es2015", "lib": ["dom", "esnext"] }

Funcionó para mí.

over 4 years ago · Santiago Trujillo Relatório

0

A partir de angular 11 y gracias a TypeScript 3.9 , esta es ahora la nueva configuración.

 "compilerOptions": { "target": "es2018", "module": "es2020", "lib": ["es2020", "dom"], }

¿Por qué es2020 en lugar de esnext ?

En TypeScript 3.9, el comportamiento del compilador de TypeScript controlado por el módulo es el mismo con los valores "esnext" y "es2020". Este comportamiento puede cambiar en el futuro, porque la opción "esnext" podría evolucionar de formas incompatibles con versiones anteriores, lo que daría lugar a errores en tiempo de compilación o tiempo de ejecución durante una actualización de TypeScript. Como resultado, el código puede volverse inestable. El uso de la opción "es2020" mitiga este riesgo.

para leer más

over 4 years ago · Santiago Trujillo Relatório

0

Puede ampliar la interfaz de matriz global mientras espera la estabilidad, momento en el que se agregará a la biblioteca predeterminada.

 interface Array<T> { flat(): Array<T>; flatMap(func: (x: T) => T): Array<T>; }
over 4 years ago · Santiago Trujillo Relatório

0

Debe agregar es2019 o es2019.array a su configuración --lib para que TypeScript reconozca array.flat() y flatMap() .

Ejemplo:

 { "compilerOptions": { "target": "es5", "lib": [ "es2019" ] } }

Anteriormente, esto estaba disponible como parte de esnext o esnext.array , pero ahora es oficialmente parte de ES2019.

over 4 years ago · Santiago Trujillo Relatório

0

La respuesta de Aaron Beall es excelente. Puede valer la pena saber que si no se especifica "lib" en el archivo tsConfig.JSON, se inyecta una lista predeterminada de bibliotecas. Las bibliotecas predeterminadas inyectadas son: ► Para --target ES5: DOM,ES5,ScriptHost ► Para --target ES6: DOM,ES6,DOM.Iterable,ScriptHost

En otras palabras: debemos especificar aquellas librerías que se agregaron previamente de forma automática. (consulte: https://www.typescriptlang.org/docs/handbook/compiler-options.html para obtener más información)

 "compilerOptions": { "target": "es6", "lib": [ "es2019", "DOM", "ES6" ,"DOM.Iterable", "ScriptHost"],}
over 4 years ago · Santiago Trujillo Relatório

0

Si está en una versión anterior a es2019, puede implementar un shim para proporcionar una funcionalidad similar a .flat() y .flatMap() proporcionada por bibliotecas posteriores.

A matriz plana de un solo nivel

 arr.reduce((acc, val) => acc.concat(val), []);

A una matriz multinivel plana

 function flatDeep(arr, d = 1) { return d > 0 ? arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatDeep(val, d - 1) : val), []) : arr.slice(); };

para saber más profundamente, también puede consultar el siguiente enlace

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda