Как определить подпись индекса для псевдонима типа карты в Typescript?
Если я определил тип для Map
как это:
type MyCustomMap = Map<string, number>;
Как я могу добавить подпись индекса, чтобы я мог установить значения ключа после создания? Я был в состоянии сделать такую вещь с типами, которые определяют различные атрибуты, такие как:
type MyCustomObj = {
[key: string]: any;
something: string;
}
Но я не мог найти способ сделать это в случае выше.
1 ответ
Решение
Я думаю, что вы ищете что-то вроде этого:
type MyCustomObj<Key extends string | number, Value, Rest = {}> =
Key extends string ? { [key: string]: Value } & Rest: { [key: number]: Value } & Rest;
И вы можете использовать это так:
type Obj = MyCustomObj<string, number>;
type CustomObj = MyCustomObj<string, number, { key: boolean }>;