TS 枚举 vs 联合类型:选择最佳方案
比较枚举和联合类型的优劣,学会在项目中做出正确选择。 · 难度:入门 · +15XP
枚举与联合类型概述
TypeScript 提供了枚举(enum)和联合类型(union type)两种方式来表示一组有限的取值。虽然它们有相似之处,但在运行时行为、类型安全和可维护性方面存在显著差异。
对比表格
| 特性 | 枚举 | 联合类型 |
|---|---|---|
| 运行时存在 | 是(生成 JavaScript 对象) | 否(仅在编译时) |
| 反向映射 | 支持 | 不支持 |
| 类型安全 | 中等(可赋任意数值) | 高(严格限定) |
| 自动增量 | 支持 | 不支持 |
| Tree-shaking | 不利于 | 有利 |
代码示例
// 枚举方式
enum Status { Active = 'ACTIVE', Inactive = 'INACTIVE' }
// 联合类型方式
type StatusUnion = 'ACTIVE' | 'INACTIVE';
function handleStatus(s: StatusUnion) { /* ... */ }
handleStatus('ACTIVE'); // 安全
练习提示:将给定的枚举改写为联合类型,并确保代码仍然正常工作。