如何在TypeScript中将枚举(enum)用作接口(interface)?
TypeScript:合并枚举与接口的简洁实现
不用同时写接口和枚举,只用一个枚举就能搞定两种需求,分两种场景处理:
场景1:参数需要键值对结构(对应原MyIface)
如果myFunc的参数要符合{alice: 'Alice', bob: 'Bob'}这种键值对结构,用typeof 枚举名来获取类型即可:
enum MyCombined { alice = 'Alice', bob = 'Bob' } // typeof MyCombined 等价于你原来定义的 MyIface function myFunc(params: typeof MyCombined) {} // 直接使用枚举值 const myVar = MyCombined.alice
场景2:参数需要枚举值类型(比如'Alice'或'Bob')
如果参数只需要是枚举的具体值,直接把枚举本身当类型用:
enum MyCombined { alice = 'Alice', bob = 'Bob' } // MyCombined 作为类型代表 'Alice' | 'Bob' 联合类型 function myFunc(params: MyCombined) {} const myVar = MyCombined.alice
原理说明
typeof MyCombined会提取枚举对象的类型结构,键是枚举的属性名,值是对应的枚举值,完全匹配原接口MyIface。- 枚举本身作为类型时,自动代表所有枚举成员值的联合类型,刚好满足参数值的约束需求。
内容的提问来源于stack exchange,提问作者ReactHelp
相关产品推荐
相关产品推荐

