Typescript flatMap, flat, flatten не существует для типа any [] - PullRequest
0 голосов
/ 30 ноября 2018

Я использую Chrome 70, а Chrome добавляет методы .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, но все еще не решил.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Вы должны добавить es2019 или es2019.array к настройке --lib, чтобы TypeScript распознал array.flat() и flatMap().

Пример:

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "es2019"
    ]
  }
}

Ранее этобыл доступен как часть esnext или esnext.array, но теперь он официально является частью ES2019.

0 голосов
/ 30 ноября 2018

Вы можете расширить интерфейс глобального массива, ожидая стабильности, после чего он будет добавлен в библиотеку по умолчанию.

interface Array<T> {
    flat(): Array<T>;
    flatMap(func: (x: T) => T): Array<T>;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...