Ramda的流动分型有以下curried function definitions:在Ramda的流量分型咖喱函数定义
declare type __CurriedFunction1<A, R, AA: A> =
& ((...r: [AA]) => R)
declare type CurriedFunction1<A, R> = __CurriedFunction1<A, R, *>
declare type __CurriedFunction2<A, B, R, AA: A, BB: B> =
& ((...r: [AA]) => CurriedFunction1<BB, R>)
& ((...r: [AA, BB]) => R)
declare type CurriedFunction2<A, B, R> = __CurriedFunction2<A, B, R, *, *>
// ...
我不明白的____CurriedFunctionN
帮手和AA
,BB
类型的需要,即为什么不能CurriedFunction1<A, R>
被定义为:
declare type CurriedFunction1<A, R> =
& ((...r: [A]) => R)
无论你的问题如何,对于像curried函数这样的简单构造来说,这似乎相当复杂。我的意思是variadic函数(带有一个rest参数)很难。参数多态论据很难。但从类型层面来看,一系列一元函数似乎相当容易。 – ftor