Typescript: требовать все ключи в enum для допустимого типа - PullRequest
0 голосов
/ 07 мая 2020

В Typescript у меня есть следующее перечисление:
enum User { Bob = "Bob", Sally = "Sally" }

Я хотел бы убедиться, что новый тип определяет логическое значение для каждого значения перечисления:

type UserActiveMap {
   User.Bob: boolean
   User.Sally: boolean
}

Однако я не хочу перечислять каждое значение перечисления.
Я знаю, что могу использовать keyof typeof, но я не уверен, как определить тип, чтобы обеспечить такое поведение:

type UserActiveMap {
   keyof typeof User: boolean
} // wrong

Практическая реализация, к которой я стремлюсь:

const rightMap: UserActiveMap = { User.Bob = true, User.Sally = false } // valid
const wrongMap: UserActiveMap = { User.Bob = false } // invalid - missing Sally

Есть какой-нибудь совет?

1 Ответ

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

Оказывается, я был близок к синтаксису, но то, что я искал, было:

type UserActiveMap {
   [K in keyof typeof User]: boolean
}

Теперь я могу реализовать с помощью:

const MyMap = { User.Bob = true } // invalid type - missing Sally
...