我正在使用铬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
但仍未解决。
您应该将es2019
或es2019.array
添加到TypeScript的--lib
设置中以识别array.flat()
和flatMap()
。
例:
{
"compilerOptions": {
"target": "es5",
"lib": [
"es2019"
]
}
}
以前这是esnext
或esnext.array
的一部分,但它现在正式成为ES2019的一部分。
您可以在等待稳定性时扩展全局数组接口,此时它将添加到默认库中。
interface Array<T> {
flat(): Array<T>;
flatMap(func: (x: T) => T): Array<T>;
}