我有一个处理承诺的map
的咖喱版本。它需要两个参数,一次一个。它需要两个类型参数,以使调用者提供无法推断的片段。但是,实际上,调用者总是必须提供它们,因为在传递的转换函数中不会推断类型。该函数看起来像这样:
/** * @description * Like `ramda.map`, but handles an iterator that returns a promise (or not). * * @example * await mapP((x: number) => Promise.resolve(x + 1))([1, 2, 3]) // -> [2, 3, 4] */ export const mapP = <T, R>(xf: (value: T) => Promise<R> | R) => ( data: T[], ): Promise<R[]> => pipe(when(isNil, always([])), map(xf), allP)(data)
这里是我叫它,您可以看到类型系统不知道
x
。
我该如何修正编写函数的方式以使类型起作用(不放弃使用,我知道如果不使用它,我会知道的)?
我有一个处理承诺的地图的咖喱版本。它需要两个参数,一次一个。它需要两个类型参数,以使调用者提供无法推断的片段。但是,实际上...
我将使用以下声明: