Typescript: Hur man härleder typen på den andra parametern baserat på den första i TypeScript-generics
Jag har försökt utan framgång att härleda typningen av den andra generiska parametern baserat på den första. För närvarande har jag följande implementation.
interface IProps {
[propertyName: string ]: boolean | number | string
}
class myClass <T extends IProps> {
...
private _map = new Map < keyof T, Array< T[keyof T]>>();
...
}
Problemet är att jag inte kan begränsa typningen av arrayen beroende på den kopplade typen av posten i mappen.
Om jag har en
{
x:"string",
y:0
}
Jag skulle vilja begränsa min karta så att jag bara skulle kunna hänvisa till Array<string> när jag anropar _map.get("x") och endast Array<number> när jag anropar _map.get("y").
Svar #1
Det finns inget samband mellan keyof T och Array<T[keyof T]>.
Vilken som helst nyckel från T kommer att returnera vilken typ av värde som helst från T.