You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 08:45:28