Tengo una función que acepta argumentos de tipo genérico y devuelve una tupla de matrices de los mismos tipos, sin embargo, esta función puede aceptar una cantidad dinámica de esos genéricos. Algo como:
function myFunction<T1>(): [Array<T1>] {...} function myFunction<T1, T2>(): [Array<T1>, Array<T2>] {...} function myFunction<T1, T2, T3>(): [Array<T1>, Array<T2>, Array<T3>] {...}y así.
¿Cómo defino un solo tipo T genérico y un valor de retorno equivalente para poder pasar tantos genéricos diferentes como quiera?
He intentado hacerlo de una manera simple como:
function myFunction<T extends any[]>(): Array<Array<T[number]>> {...}Sin embargo, eso pierde información sobre qué tipo se almacena en qué índice.
También probé algo similar a esto:
function myFunction<T extends any[]>(): {[key in keyof T]: Array<T[key]>} {...}Sin embargo, llamar a keyof T en una matriz devuelve otras propiedades además de índices como "longitud", etc., lo que también lo hace un poco problemático durante la asignación. Dando como resultado errores similares a este:
TS2322: Type 'string[][]' is not assignable to type '{ [x: number]: string[]; length: string[]; toString: string[]; toLocaleString: string[]; pop: string[]; push: string[]; concat: string[]; join: string[]; reverse: string[]; shift: string[]; slice: string[]; sort: string[]; splice: string[]; ... 25 more ...; at: string[]; }'.