【发布时间】:2018-06-17 04:52:50
【问题描述】:
我遇到了一个提供外部 ts 类型的 js 库。假设是
interface ComplicatedFunction {
(n: number, p: any): string,
(s: string, p: any): number,
(b: boolean, p: any): number,
}
declare const fn: ComplicatedFunction
我想咖喱它:
import fn from 'fn'
const curriedFn = (p1: ?) =>
(p2: any) =>
fn(p1, p2)
问题是p1的type是怎么填的? (所有严格检查)
我尝试使用泛型来修复类型:
const curry2 = <P1, P2, R>(fn: (n: P1, m: P2) => R) =>
(n: P1) => (m: P2) => fn(n, m)
const curriedFn = curry2(fn)
不幸的是,curriedFn 属于签名(b: boolean, p: any): number。这样就省略了其他两个函数签名。
【问题讨论】:
标签: typescript types functional-programming currying