TypeScript如何将枚举的键转换为类型?
获取枚举键作为TypeScript类型的正确方式
要提取枚举的键作为类型,你需要结合typeof和keyof操作符,这是TypeScript中处理枚举类型的标准做法:
enum Layers { Front = 1, Middle = 2, Back = 3, } // 正确获取枚举键的联合类型 type LayerKeys = keyof typeof Layers; // 类型为 "Front" | "Middle" | "Back" type LayerConfig = Map<LayerKeys, {}>;
原理说明
TypeScript的数字枚举会编译成包含正向(键→值)和反向(值→键)映射的对象,typeof Layers用于获取这个枚举对象的类型,keyof操作符则提取该类型的所有键名,最终得到你需要的字符串联合类型。
可选:过滤反向映射的数值键
如果想严格排除自动生成的数值反向键(比如Layers[1]对应的"1"键),可以用Exclude类型工具过滤掉数值类型的键:
type LayerKeys = Exclude<keyof typeof Layers, number>;
内容的提问来源于stack exchange,提问作者Sir hennihau
相关产品推荐
相关产品推荐

