omposición de función recursiva de @Typescript

Quiero crear una cadena de funciones, que sería una entrada de una función de tubería / flujo / componer.

¿Es esto posible sin la expansión literal de los tipos a la profundidad seleccionada, como generalmente se maneja? @Ver el flujo de lodash.

Quiero lograr la verificación de tipo del flujo de datos en la cadena. - El argumento de una función es el resultado del anterior - El primer argumento es un parámetro de plantilla - El último retorno es un parámetro de plantilla

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

La idea está en el borrador.

Sin embargo, esto produce los siguientes errores:

Type alias 'Chain' circularly references itself. (entiendo por qué, no sé cómo revender)A rest element type must be an array type. (probablemente la propagación no está disponible para tuplas genéricas)Type 'Chain' is not generic. (ni siquiera entiendo por qué este error está aquí)

¿Es esta definición deChain posible en mecanografiado? Si es así, incluya un fragmento.

(Probado en el último tsc3.1.6)

Respuestas a la pregunta(1)

Su respuesta a la pregunta