J'utilise chrome 70 et chrome ajoute des méthodes .flatMap, .flatten, .flat
. Mon code fonctionne donc 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 est TS2339: Property 'flatMap' does not exist on type 'any[]'.
Par la façon dont je me sers Angular 6
, qui utilise Typescript ~2.9.2
et je déjà inclus import 'core-js/es7/array';
dans polyfills.ts
.
Je suppose qu'il n'y a pas de saisie pour ces méthodes, et j'ai essayé de le npm run -dev @types/array.prototype.flatmap
résoudre, mais toujours pas.
la source
compilerOptions
danstsconfig.app.json
"lib": [ "es2017", "dom", "esnext.array", ]
Merci monsieur"esnext"
au lieu de"esnext.array"
?Vous pouvez étendre l'interface du tableau global pendant que vous attendez la stabilité, auquel point elle sera ajoutée à la bibliothèque par défaut.
la source
La réponse d'Aaron Beall est excellente. Il peut être intéressant de savoir que si "lib" n'est pas spécifié dans le fichier tsConfig.JSON, une liste par défaut de bibliothèques est injectée. Les bibliothèques par défaut injectées sont: ► Pour --target ES5: DOM, ES5, ScriptHost ► Pour --target ES6: DOM, ES6, DOM.Iterable, ScriptHost
En d'autres termes: nous devons spécifier les bibliothèques qui ont été précédemment ajoutées automatiquement. (voir: https://www.typescriptlang.org/docs/handbook/compiler-options.html pour plus d'informations)
la source
Vers un tableau plat à un niveau
Vers un réseau plat à plusieurs niveaux
pour en savoir plus, vous pouvez également consulter le lien ci-dessous
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
la source