首页 > 解决方案 > 打字稿:要求枚举中的所有键都是有效类型

问题描述

在打字稿中,我有一个枚举如下:
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

有什么建议吗?

标签: typescripttypesenums

解决方案


原来我很接近语法,但我正在寻找的是:

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

现在,我可以实现:

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

推荐阅读