Używam chrome 70 i chrome dodaje metody .flatMap, .flatten, .flat
. Więc mój kod działa zgodnie z oczekiwaniami. Niestety, Typescript tego nie lubi.
// data.flatMap lint error
export const transformData = (data: any[]) => data.flatMap(abc => [
parentObj(abc),
...generateTasks(abc)
]);
ostrzeżenie, które otrzymałem, to TS2339: Property 'flatMap' does not exist on type 'any[]'.
Nawiasem mówiąc używam Angular 6
, które wykorzystują Typescript ~2.9.2
i zawierają już import 'core-js/es7/array';
w polyfills.ts
.
Domyślam się, że nie ma wpisywania dla tych metod i próbowałem, npm run -dev @types/array.prototype.flatmap
ale nadal nie rozwiązałem.
angular
typescript
Haziq
źródło
źródło
compilerOptions
wtsconfig.app.json
"lib": [ "es2017", "dom", "esnext.array", ]
Dziękuję panu"esnext"
zamiast"esnext.array"
?Możesz rozszerzyć globalny interfejs tablicy podczas oczekiwania na stabilność, po czym zostanie on dodany do domyślnej biblioteki.
źródło
Odpowiedź Aarona Bealla jest doskonała. Warto wiedzieć, że jeśli w pliku tsConfig.JSON nie podano „lib”, wstrzyknięta zostanie domyślna lista bibliotek. Domyślne wstawione biblioteki to: ► For --target ES5: DOM, ES5, ScriptHost ► For --target ES6: DOM, ES6, DOM.Iterable, ScriptHost
Innymi słowy: musimy określić te biblioteki, które zostały wcześniej dodane automatycznie. (więcej informacji: https://www.typescriptlang.org/docs/handbook/compiler-options.html )
źródło
Do płaskiego szyku jednopoziomowego
Do płaskiej tablicy wielopoziomowej
aby dowiedzieć się więcej, możesz również sprawdzić poniższy link
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
źródło