Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

218
Views
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 answers
Answer question

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!