Я использую хром 70, и хром добавляет методы .flatMap, .flatten, .flat
. Итак, мой код работает, как ожидалось. К сожалению, TypeScript это не нравится.
// data.flatMap lint error
export const transformData = (data: any[]) => data.flatMap(abc => [
parentObj(abc),
...generateTasks(abc)
]);
я получил предупреждение TS2339: Property 'flatMap' does not exist on type 'any[]'.
Кстати я использую то Angular 6
, что использую Typescript ~2.9.2
и уже включаю import 'core-js/es7/array';
в polyfills.ts
.
Я предполагаю, что для этих методов нет набора текста, и я пытался, npm run -dev @types/array.prototype.flatmap
но все еще не решил.
angular
typescript
Haziq
источник
источник
compilerOptions
intsconfig.app.json
"lib": [ "es2017", "dom", "esnext.array", ]
Спасибо, сэр"esnext"
вместо"esnext.array"
?Пока вы ждете стабильности, вы можете расширить интерфейс глобального массива, после чего он будет добавлен в библиотеку по умолчанию.
источник
Ответ Аарона Билла превосходен. Возможно, стоит знать, что если "lib" не указана в файле tsConfig.JSON, будет введен список библиотек по умолчанию. Внедренные библиотеки по умолчанию: ► Для --target ES5: DOM, ES5, ScriptHost ► Для --target ES6: DOM, ES6, DOM.Iterable, ScriptHost
Другими словами: мы должны указать те библиотеки, которые ранее были добавлены автоматически. (см .: https://www.typescriptlang.org/docs/handbook/compiler-options.html для получения дополнительной информации)
источник
К плоскому одноуровневому массиву
К плоскому многоуровневому массиву
чтобы узнать больше, вы также можете проверить ссылку ниже
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
источник