背景
TypeScript 支持枚举和字面量 + 联合类型。枚举是 TypeScript 中的一种数据类型,而字面量 + 联合类型是更轻量的替代方案。
原因
- 性能: 字面量 + 联合类型在编译时不生成额外的 JavaScript 代码。
- 编译输出: 枚举会生成复杂的 JavaScript 代码,增加了大小和复杂性。
- 可读性: 字面量 + 联合类型更易于理解和维护。
对比
特性 |
枚举 |
字面量 + 联合类型 |
编译后代码 |
生成额外的 JavaScript 代码 |
不增加额外代码 |
性能 |
有轻微性能影响 |
更高效 |
可读性 |
较为复杂 |
简洁明了 |
示例代码
枚举
1 2 3 4 5 6 7 8 9
| enum Color { Red = "Red", Green = "Green", Blue = "Blue" }
function paint(color: Color): void { console.log(`Painting with ${color}`); }
|
Color
: 枚举定义颜色选项。
paint
: 接受 Color
枚举作为参数。
字面量 + 联合类型
1 2 3 4 5
| type Color = "Red" | "Green" | "Blue";
function paint(color: Color): void { console.log(`Painting with ${color}`); }
|
Color
: 使用字面量定义颜色选项。
paint
: 接受 Color
字面量作为参数。
注意点
- 如果需要双向映射或复杂操作,可以考虑使用枚举。
- 对于简单场景,推荐使用字面量 + 联合类型以保持简洁。