跳到主要内容

TypeScript 枚举(Enum)

本节介绍枚举类型的定义及其使用,需要定义一组相同主题的常量数据时,应该立即想到枚举类型。在学习过程中,需要注意枚举类型的正向映射和反向映射,可以通过编译后的 JavaScript 源码进行分析,为什么可以进行反向映射。

1. 慕课解释

使用枚举我们可以定义一些带名字的常量。TypeScript 支持数字的和基于字符串的枚举。

2. 定义及使用场景

枚举类型弥补了 JavaScript 的设计不足,很多语言都拥有枚举类型。

当我们需要一组相同主题下的数据时,枚举类型就很有用了。

enum Direction { Up, Down, Left, Right }

enum Months { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec }

enum Size { big = '大', medium = '中', small = '小' }

enum Agency { province = 1, city = 2, district = 3 }

代码解释:

代码中通过枚举类型分别声明了:不同的 方向,一年内不同的 月份,一个商品的不同 尺寸属性,经销商的不同 级别,这样的一组常量数据,是在一个相同主题下的不同表示。

3. 数字枚举与字符串枚举

声明一个枚举类型,如果没有赋值,它们的值默认为数字类型且从 0 开始累加:

enum Months {
Jan,
Feb,
Mar,
Apr
}

Months.Jan === 0 // true
Months.Feb === 1 // true
Months.Mar === 2 // true
Months.Apr === 3 // true

现实中月份是从 1 月开始的,那么只需要这样:

// 从第一个数字赋值,往后依次累加
enum Months {
Jan = 1,
Feb,
Mar,
Apr
}

Months.Jan === 1 // true
Months.Feb === 2 // true
Months.Mar === 3 // true
Months.Apr === 4 // true

代码解释:

第 3 行,从属性 Jan 被赋值为 1 开始,后续的属性值依次累加。

枚举类型的值为字符串类型