在 TypeScript 中使用枚举作为受限键或值类型
Use an Enum as Restricted Key or Value type in TypeScript
用于keyof typeof
将枚举用作受限键类型。
构造的类型将包含所有枚举键,它们的值被初始化为any
.
索引.ts
enum Sizes { Small = 'S', Medium = 'M', Large = 'L', ExtraLarge = 'XL', } /** * 👇️ let values: {S: any; M: any; L: any; XL: any} */ let values: { [key in Sizes]: any }; /** * 👇️ let keys: {Small: any; Medium: any; Large: any; ExtraLarge: any} */ let keys: { [key in keyof typeof Sizes]: any };
第一个示例展示了如何构建一个包含枚举值作为键的类型,第二个示例展示了如何使用枚举键构建一个类型。
如果您不希望构造类型中的所有键或值都是必需的,请使用问号将它们设置为可选。
索引.ts
enum Sizes { Small = 'S', Medium = 'M', Large = 'L', ExtraLarge = 'XL', } /** * 👇️ let values: {S?: any; M?: any; L?: any; XL?: any} */ let values: { [key in Sizes]?: any }; /** * 👇️ let keys: {Small?: any; Medium?: any; Large?: any; ExtraLarge?: any} */ let keys: { [key in keyof typeof Sizes]?: any };
现在消费者只能指定他们需要的密钥。
索引.ts
enum Sizes { Small = 'S', Medium = 'M', Large = 'L', ExtraLarge = 'XL', } /** * 👇️ let values: {S?: any; M?: any; L?: any; XL?: any} */ let values: { [key in Sizes]?: any }; values = { M: 'medium' }; /** * 👇️ let keys: {Small?: any; Medium?: any; Large?: any; ExtraLarge?: any} */ let keys: { [key in keyof typeof Sizes]?: any }; keys = { Large: 'large' };
使用枚举时,
keyof typeof构造一个将所有枚举键表示为字符串的类型。
索引.ts
enum Sizes { Small = 'S', Medium = 'M', Large = 'L', ExtraLarge = 'XL', } // 👇️ type KeysUnion = "Small" | "Medium" | "Large" | "Extra Large" type KeysUnion = keyof typeof Sizes;
如果您需要检查某个值是否存在于枚举中,请单击
以下文章。
# 额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: