En una matriz debe haber una lista de funciones. Estas funciones deberían actuar como una canalización.
Por ejemplo:
const pipeline: Pipeline<number, string> = [ (val: number) => { return { id: val }; }, (val: { id: number }) => { return val.id.toString(); }, ];La tubería debe tener seguridad de tipos, cada función debe inferir el tipo de su parámetro automáticamente (usando el tipo de retorno de la función anterior).
El siguiente es mi propio borrador, pero como puede ver, la seguridad de tipos de mi tipo está limitada al tipo de inicio y final.
type Pipeline<StartType, EndType> = | [ (val: StartType) => unknown, ...Array<(val: unknown) => unknown>, (val: unknown) => EndType ] | [(val: StartType) => EndType];