我不知道如何进行这项工作。我在打字稿中定义了一个函数,该函数本质上包装了Ramda的pipe函数。我想接受可能不是函数的值,将非函数值包装在常量函数中,然后将其全部传递给管道。
这是我尝试编写的原始功能:
const convertToPipeable = (values: any[]) => {
const valueFunctions = map(valueAsFunction, values);
return pipe(...valueFunctions);
}
在我将valueFunctions扩展到管道上的那一刻,打字稿抱怨说“期望1-6个自变量,但得到0或更多”。我意识到这是因为管道为每个参数长度大小写(从1到6)都使用了重载类型,但是我很难相信这不可能在其上扩展此数组。我已经尝试了多种方法,从将values
参数定义为一个大元组,到使用Ramda的apply
方法代替散布运算符,这些方法均无法正常工作。
如果没有很好的输入方式,那有什么替代方法?
干杯!
答案 0 :(得分:2)
如果pipe
的类型声明最多接受6个参数,但是您拥有一个数组(据编译器所知)可以任意长,那么最好使用{{1} }是:
pipe
我不熟悉Ramda,想知道是否还有其他Ramda函数可以使用。