在Ramda的管道函数上传播数组会产生类型错误“预期1-6,但得到0或更多”

时间:2018-08-21 00:32:05

标签: typescript ramda.js

我不知道如何进行这项工作。我在打字稿中定义了一个函数,该函数本质上包装了Ramda的pipe函数。我想接受可能不是函数的值,将非函数值包装在常量函数中,然后将其全部传递给管道。

这是我尝试编写的原始功能:

const convertToPipeable = (values: any[]) => {
  const valueFunctions = map(valueAsFunction, values);

  return pipe(...valueFunctions);
}

在我将valueFunctions扩展到管道上的那一刻,打字稿抱怨说“期望1-6个自变量,但得到0或更多”。我意识到这是因为管道为每个参数长度大小写(从1到6)都使用了重载类型,但是我很难相信这不可能在其上扩展此数组。我已经尝试了多种方法,从将values参数定义为一个大元组,到使用Ramda的apply方法代替散布运算符,这些方法均无法正常工作。

如果没有很好的输入方式,那有什么替代方法?

干杯!

1 个答案:

答案 0 :(得分:2)

如果pipe的类型声明最多接受6个参数,但是您拥有一个数组(据编译器所知)可以任意长,那么最好使用{{1} }是:

pipe

我不熟悉Ramda,想知道是否还有其他Ramda函数可以使用。