javascript - Echivalent generic variadic Typescript pentru valoarea returnată
Am o funcție care acceptă argumente de tip generic și returnează un tuplu de array-uri de aceleași tipuri, totuși această funcție poate accepta un număr dinamic de astfel de tipuri generice. Ceva de genul:
function myFunction<T1>(): [Array<T1>] {...}
function myFunction<T1, T2>(): [Array<T1>, Array<T2>] {...}
function myFunction<T1, T2, T3>(): [Array<T1>, Array<T2>, Array<T3>] {...}
și așa mai departe.
Cum definesc un singur tip generic T și o valoare de retur echivalentă astfel încât să pot trece câte tipuri generice vreau?
Am încercat să fac asta într-un mod simplu, de genul:
function myFunction<T extends any[]>(): Array<Array<T[number]>> {...}
Totuși, asta pierde informații despre ce tip este stocat la fiecare index.
Am încercat de asemenea ceva similar cu acesta:
function myFunction<T extends any[]>(): {[key in keyof T]: Array<T[key]>} {...}
Totuși, apelarea keyof T pe un Array returnează alte proprietăți pe lângă indexuri, cum ar fi „length” etc., ceea ce o face de asemenea puțin problematică în timpul atribuirii. Rezultând erori similare cu aceasta:
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[]; }'.