小编Jar*_*lík的帖子

打字稿递归函数组成

我想创建一个函数链,它将是一个管道/流/组合函数的输入.

如果没有将类型的字面扩展到选定的深度,这是否可能,这通常是处理?见lodash的流程.

我想实现链中数据流的类型检查. - 函数的参数是前一个的结果 - 第一个参数是模板参数 - 最后一个返回是模板参数

type Chain<In, Out, Tmp1 = any, Tmp2 = any> = [] | [(arg: In) => Out] | [(arg: In) => Tmp1, (i: Tmp1) => Tmp2, ...Chain<Tmp2, Out>];
Run Code Online (Sandbox Code Playgroud)

这个想法在草案中.

然而,这会产生以下错误:

  1. Type alias 'Chain' circularly references itself. (明白为什么,不知道怎么解决)
  2. A rest element type must be an array type. (可能传播不适用于通用元组)
  3. Type 'Chain' is not generic. (甚至不理解为什么这个错误甚至在这里)

这是ChainTypecript 中可能的定义吗?如果是这样,请附上一个片段.

(测试最新的tsc 3.1.6)

javascript recursion function-composition typescript spread-syntax

2
推荐指数
1
解决办法
396
查看次数