打字稿:要求枚举中的所有键都是有效类型
Posted
技术标签:
【中文标题】打字稿:要求枚举中的所有键都是有效类型【英文标题】:Typescript: Require all keys in enum for valid type 【发布时间】:2020-08-23 02:21:08 【问题描述】:在 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】:原来我很接近语法,但我正在寻找的是:
type UserActiveMap
[K in keyof typeof User]: boolean
现在,我可以实现:
const MyMap = User.Bob = true // invalid type - missing Sally
【讨论】:
以上是关于打字稿:要求枚举中的所有键都是有效类型的主要内容,如果未能解决你的问题,请参考以下文章