J'utilise chrome 70 et chrome ajoute les méthodes .flatMap, .flatten, .flat
. Donc, mon code fonctionne comme prévu. Malheureusement, TypeScript ne l'aime pas.
// data.flatMap lint error
export const transformData = (data: any[]) => data.flatMap(abc => [
parentObj(abc),
...generateTasks(abc)
]);
l'avertissement que j'ai obtenu est TS2339: Property 'flatMap' does not exist on type 'any[]'.
En passant, j'utilise Angular 6
, qui utilise TypeScript ~2.9.2
et j'inclus déjà import 'core-js/es7/array';
dans polyfills.ts
.
Mon hypothèse est qu'il n'y a pas de dactylographie pour ces méthodes et j'ai essayé de npm run -dev @types/array.prototype.flatmap
mais je n'ai toujours pas résolu.
Vous devez ajouter es2019
ou es2019.array
à votre paramètre --lib
pour que TypeScript reconnaisse array.flat()
et flatMap()
.
Exemple:
{
"compilerOptions": {
"target": "es5",
"lib": [
"es2019"
]
}
}
Auparavant, cette option était disponible dans esnext
ou esnext.array
, mais elle fait maintenant officiellement partie de ES2019.
Vous pouvez étendre l’interface de tableau global en attendant la stabilité. À ce stade, elle sera ajoutée à la bibliothèque par défaut.
interface Array<T> {
flat(): Array<T>;
flatMap(func: (x: T) => T): Array<T>;
}