Ramda 文档中的类型签名使用的是Haskell 的语法, Haskell 作为一门纯函数式编程语言, 可以很简洁地表达柯里化的语义, 相较之下, TypeScript 的表达方式就显得比较臃肿....当然, 使用Haskell 的类型签名的意义不仅于此, 让我们再看看其他"奇怪"的函数类型:
ap:
[a → b] → [a] → [b]
Apply f => f (a → b) → f a → f...TypeScript, 因为: TypeScript 不支持将 「类型构造器」 作为类型参数!...在类型签名中F是一个类型构造器, 既和Array一样的 「返回类型的类型」, 然而, TypeScript 里根本无法声明"一个类型参数为类型构造器"....正如示例中type T = F;中, 我们无法告诉TypeScript, 这里的F是一个类型构造器, 所以当将number传入F的时候, 就报错了.