Я пытаюсь создать гарантированный поиск для данного перечисления.Например, в поиске должно быть ровно одно значение для каждого ключа перечисления.Я хочу гарантировать это через систему типов, чтобы не забыть обновить поиск при расширении enum.Я попробовал это:
type EnumDictionary<T, U> = {
[K in keyof T]: U;
};
enum Direction {
Up,
Down,
}
const lookup: EnumDictionary<Direction, number> = {
[Direction.Up]: 1,
[Direction.Down]: -1,
};
Но я получаю эту странную ошибку:
Тип '{[Direction.Up]: число;[Direction.Down]: номер;} 'нельзя назначить типу' Direction '.
Мне это кажется странным, поскольку он говорит, что тип lookup
должен быть Direction
вместо EnumDictionary<Direction, number>
.Я могу подтвердить это, изменив объявление lookup
на:
const lookup: EnumDictionary<Direction, number> = Direction.Up;
, и ошибок нет.
Как создать тип поиска для перечисления, гарантирующего каждое значение изenum приведет к другому значению другого типа?
Версия TypeScript: 3.2.1