Necesito crear un tipo que pueda contener una matriz donde cada elemento es una función que obtiene la salida anterior como entrada. Por ejemplo, una matriz válida es:
const pipe: SpecialArray = [ () => string, (prev:string) => number, (prev:number) => boolean ];Una matriz inválida sería:
const pipe: SpecialArray = [ () => string, (prev:number) => number, // <-- Here number should be string (prev:number) => boolean ];¿Hay alguna forma de definir dicha estructura en TypeScript?
Creo que no, dado que Array es homogéneo, tendrá que definir en la forma [(a: string) => number, (b: number) => boolean] , y realmente no puede enumerar todo (a menos que un código se utiliza un generador).
Es imposible en TypeScript crear un tipo independiente para este tipo de matriz. Para hacerlo, debe crear una función de compose , inferir cada función a partir de argumentos y validarla. Consulte mi artículo y preguntas/respuestas sobre SO: primero , segundo , tercero .
También puede verificar esta función de redacción en fnts lib