Как определить подпись индекса для псевдонима типа карты в 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 }>;

Детская площадка

Другие вопросы по тегам