Saya menggunakan chrome 70 dan chrome memang menambahkan metode .flatMap, .flatten, .flat
. Jadi kode saya berjalan seperti yang diharapkan. Sayangnya, Typecript tidak menyukainya.
// data.flatMap lint error
export const transformData = (data: any[]) => data.flatMap(abc => [
parentObj(abc),
...generateTasks(abc)
]);
peringatan yang saya dapatkan adalah TS2339: Property 'flatMap' does not exist on type 'any[]'.
Ngomong-ngomong saya menggunakan Angular 6
, yang Typescript ~2.9.2
sudah saya gunakan dan sudah saya sertakan import 'core-js/es7/array';
di polyfills.ts
.
Dugaan saya adalah bahwa tidak ada pengetikan untuk metode ini, dan saya memang mencoba npm run -dev @types/array.prototype.flatmap
tetapi masih belum menyelesaikan.
sumber
compilerOptions
ditsconfig.app.json
"lib": [ "es2017", "dom", "esnext.array", ]
Terima kasih Pak"esnext"
daripada"esnext.array"
?Anda dapat memperluas antarmuka larik global sambil menunggu stabilitas, di mana ia akan ditambahkan ke pustaka default.
sumber
Jawaban Aaron Beall luar biasa. Perlu diketahui bahwa jika "lib" tidak ditentukan dalam file tsConfig.JSON, daftar default library akan dimasukkan. Pustaka default yang dimasukkan adalah: ► Untuk --target ES5: DOM, ES5, ScriptHost ► Untuk --target ES6: DOM, ES6, DOM.Iterable, ScriptHost
Dengan kata lain: Kita harus menentukan libs yang sebelumnya ditambahkan secara otomatis. (lihat: https://www.typescriptlang.org/docs/handbook/compiler-options.html untuk info lebih lanjut)
sumber
Ke larik tingkat tunggal datar
Untuk larik multi level datar
untuk mengetahui lebih dalam Anda juga dapat memeriksa tautan di bawah ini
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
sumber