【发布时间】:2020-02-01 19:00:40
【问题描述】:
我正在尝试在 TypeScript 中键入一个 curried map 函数。这是等效的 JavaScript:
const double = n => n * 2;
const map = f => arr => arr.map(f);
const doubleArr = map(double);
console.log(doubleArr([1, 2, 3]));
// ↳ [2, 4, 6]
理想情况下,TypeScript 应该能够推断,在将 double 提供给 map 之后,doubleArray 接受一个数字数组并返回一个数字数组。
这是我尝试过的:
const double = (n: number) => n * 2;
const map = (f: Function) => (arr: Array<any>) => arr.map(f);
但是,TypeScript 在map 内部抱怨f:
Argument of type 'Function' is not assignable to parameter of type '(value: any, index: number, array: any[]) => unknown'.
Type 'Function' provides no match for the signature '(value: any, index: number, array: any[]): unknown'.
你会如何在 TypeScript 中输入这个函数?
【问题讨论】:
标签: typescript currying map-function