任何[]类型都不存在打字稿flatMap,flat,flatten

问题描述 投票:15回答:2

我正在使用铬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
2个回答
81
投票

您应该将es2019es2019.array添加到TypeScript的--lib设置中以识别array.flat()flatMap()

例:

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

以前这是esnextesnext.array的一部分,但它现在正式成为ES2019的一部分。


2
投票

您可以在等待稳定性时扩展全局数组接口,此时它将添加到默认库中。

interface Array<T> {
    flat(): Array<T>;
    flatMap(func: (x: T) => T): Array<T>;
}
© www.soinside.com 2019 - 2024. All rights reserved.