Typescript:将数组映射到/输出中的顺序函数

Typescript:将数组映射到/输出中的顺序函数,typescript,koa,Typescript,Koa,在Typescript中,有没有一种方法可以用以下属性表示数组 [ [0]:函数(在:A中):B; [1] :功能(在:B中):C; [2] :功能(在:C中):D; 等 ] 基本上是一个函数数组,其中下一个函数接受上一个函数的返回值。我想把它用于一个膝关节炎路由器,其中可以提供一个中间件阵列。这样,可以在一个中间件函数中验证输入,然后在下一个中间件函数中使用输入,而无需强制转换。要做到这一点并不容易,首先需要一个函数来帮助进行推理(变量不能声明类型变量)。其次,您需要尽可能多的重载来支持您想

在Typescript中,有没有一种方法可以用以下属性表示数组

[
[0]:函数(在:A中):B;
[1] :功能(在:B中):C;
[2] :功能(在:C中):D;
等
]

基本上是一个函数数组,其中下一个函数接受上一个函数的返回值。我想把它用于一个膝关节炎路由器,其中可以提供一个中间件阵列。这样,可以在一个中间件函数中验证输入,然后在下一个中间件函数中使用输入,而无需强制转换。

要做到这一点并不容易,首先需要一个函数来帮助进行推理(变量不能声明类型变量)。其次,您需要尽可能多的重载来支持您想要支持的函数

解决方案可能如下所示:

function compose<A, R1, R2, R3, R4>(fn1: (a: A) => R1, fn2: (a: R1) => R2, fn3: (a: R2) => R3, fn4: (a: R3) => R4): [typeof fn1, typeof fn2, typeof fn3, typeof fn4]
function compose<A, R1, R2, R3>(fn1: (a: A) => R1, fn2: (a: R1) => R2, fn3: (a: R2) => R3): [typeof fn1, typeof fn2, typeof fn3]
function compose<A, R1, R2>(fn1: (a: A)=> R1, fn2: (a: R1) => R2) : [typeof fn1, typeof fn2]
function compose(...fns: Array<(a: any) => any>) {
    return fns;
}

// fns is  [(a: string) => string, (a: string) => number, (a: number) => string]
let fns = compose(
    (s: string) => s.toUpperCase(),
    s => +s,
    n => n.toExponential()
)
函数组合(fn1:(a:a)=>R1,fn2:(a:R1)=>R2,fn3:(a:R2)=>R3,fn4:(a:R3)=>R4:[typeoffn1,typeoffn2,typeoffn3,typeoffn4]
函数组合(fn1:(a:a)=>R1,fn2:(a:R1)=>R2,fn3:(a:R2)=>R3):[typeoffn1,typeoffn2,typeoffn3]
函数组合(fn1:(a:a)=>R1,fn2:(a:R1)=>R2):[typeoffn1,typeoffn2]
函数组合(…fns:Array any>){
返回fns;
}
//fns是[(a:string)=>string,(a:string)=>number,(a:number)=>string]
让fns=compose(
(s:string)=>s.toUpperCase(),
s=>+s,
n=>n.toExponential()
)

这正是我所担心的。。。无论如何谢谢你!