一、概述

使用枚举我们可以定义一些带名字的常量。 使用枚举可以清晰地表达意图或创建一组有区别的用例。 TypeScript 支持数字的和基于字符串的枚举。

二、枚举类型

1. 数字枚举

  1. enum Direction {
  2. Up, Right, Down, Left
  3. };

默认情况下,Up 值为 0Right 值为 1Down 值为 2Left 值为 3

当然你可以指定初始值,比如:

enum Direction {
    Up = 1, Right, Down, Left
};

此时枚举中的值,将会从 1 开始排列。

2. 字符串枚举

enum ErrorType {
    NO_PARAMS   = "参数缺失",
    NOT_DEFINED = "未定义",
    NOT_FOUNDE  = "未找到"
}

3. 反向映射

// 4. 反向映射 - 数字类型
enum _Enum {
    SUCCESS   = 200,
    NOT_FOUNT = 404
}
_Enum[404]; // NOT_FOUNT

4. 常量枚举

const enum Direction {
    Up, Right, Down, Left
}

5. 外部枚举

declare enum Enum {
    A = 1,
    B,
    C = 2
}

三、使用场景

枚举使用场景其实也比较多,比如处理后端响应的状态码,有时如果用数字来表示可能比较抽象,后面接手代码的人不容易理解,那如果用枚举来表示,比如:

// -- 定义枚举,记录后端响应的状态码
enum RStatus {
    SUCCESS = 0,
    UN_LOGIN = -10,
    TOKEN_EXPIRED = -20,
    MISS_PARAMS = -30
}

// -- 模拟后端返回code
let code = 0;

// -- 根据code做不同的处理
switch (code) {
    case RStatus.SUCCESS:
        console.log('成功')
        break;
    case RStatus.UN_LOGIN:
        console.log('未登录');
        break;
    case RStatus.TOKEN_EXPIRED:
        console.log('Token 过期');
        break;
    case RStatus.MISS_PARAMS:
        console.log('缺少必要参数');
        break;
    default: { }
}

这样是不是就清晰多了呢~