Ich verwende Chrome 70 und Chrome fügt Methoden hinzu .flatMap, .flatten, .flat
. Mein Code läuft also wie erwartet. Typescript gefällt das leider nicht.
// data.flatMap lint error
export const transformData = (data: any[]) => data.flatMap(abc => [
parentObj(abc),
...generateTasks(abc)
]);
Die Warnung, die ich bekam, ist TS2339: Property 'flatMap' does not exist on type 'any[]'.
Übrigens benutze ich Angular 6
, welche verwenden Typescript ~2.9.2
und ich bereits import 'core-js/es7/array';
in polyfills.ts
.
Ich vermute, dass es für diese Methoden keine Eingabe gibt, und ich habe versucht, npm run -dev @types/array.prototype.flatmap
aber immer noch nicht zu lösen.
quelle
compilerOptions
intsconfig.app.json
"lib": [ "es2017", "dom", "esnext.array", ]
Danke Sir"esnext"
statt zu verwenden"esnext.array"
?Sie können die globale Array-Schnittstelle erweitern, während Sie auf Stabilität warten. Ab diesem Zeitpunkt wird sie der Standardbibliothek hinzugefügt.
quelle
Aaron Bealls Antwort ist ausgezeichnet. Es kann sinnvoll sein zu wissen, dass eine Standardliste von Bibliotheken eingefügt wird, wenn "lib" nicht in der Datei tsConfig.JSON angegeben ist. Die eingefügten Standardbibliotheken sind: ► Für --target ES5: DOM, ES5, ScriptHost ► Für --target ES6: DOM, ES6, DOM.Iterable, ScriptHost
Mit anderen Worten: Wir müssen die Bibliotheken angeben, die zuvor automatisch hinzugefügt wurden. ( Weitere Informationen finden Sie unter: https://www.typescriptlang.org/docs/handbook/compiler-options.html )
quelle
Zu flaches einstufiges Array
Zu flaches mehrstufiges Array
Um genau zu wissen, können Sie auch den folgenden Link überprüfen
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
quelle