Как определить пользовательский тип карты в машинописи? - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь определить тип карты с использованием обобщений Typescript. то, что я хочу, это что-то вроде

EntityMap<U, V>, U can be only string or number

, это то, что я сделал до сих пор

export type EntityMapKey = string | number;
export type EntityMap<U, V> = { [K in EntityMapKey]: V};

, но когда мы используем его, мы можем поместить что-нибудь как U, как показано ниже

interface Jobs {
  list: EntityMap<Array, JobFile>
}

Я хочу ограничить использование любого типа, кроме string или number в качестве U, как мы можем достичь этого?

я что-то пропустил?

1 Ответ

0 голосов
/ 03 мая 2020

U в вашей EntityMap не используется, правильная реализация должна быть

export type EntityMapKey = string | number;
export type EntityMap<U extends EntityMapKey, V> = { [K in U]: V};
interface Jobs {
  list: EntityMap<string, any>
}
...