TypeScript实例讲解(十四)

699 阅读2分钟

接上一篇:TypeScript实例讲解(十三)

本篇内容:枚举类型。

枚举类型是 TypeScript 中一种常见的类型。使用枚举我们可以定义一些带名字的常量。使用枚举可以清晰地表达意图或创建一组有区别的用例。

数字枚举

// 例 1
function getState(state) {
    if (state === 0) {
        return 'NORMAL'
    } else if (state === 1) {
        return 'LATE'
    } else if (state === 2) {
        return 'ABSENT'
    }
}

在 TypeScript 中我们可以更优雅地来写这段代码,TypeScript提供了一个 enum 语法,也就是枚举类型,大家以前可能在其他语言中听说过枚举类型,现在 TypeScript 中也可以使用枚举类型。

定义枚举类型
// 例 2
enum Status {
    NORMAL,   // 正常
    LATE,     // 迟到
    ABSENT    // 缺席
}

例2通过 enum 关键字定义了一个枚举类型,NORMAL 的值为0,LATE 的值为1,ABSENT 的值为2。

使用枚举类型
// 例 3 (接例2)
Status.LATE;    // 1
Status[1];      // LATE 反向映射出类型的名称

使用枚举很简单:通过枚举的属性来访问枚举成员,另外也可以通过枚举的名字来访问枚举类型。

设置初始值
// 例 4
enum Status {
    NORMAL = 1,   // 正常
    LATE,         // 迟到
    ABSENT        // 缺席
}

枚举成员默认从0开始,依次递增。我们可以使用初始化器并指定初始化的常数,未使用初始化器的成员取值是在上一个成员的基础上加一。如例4中 NORMAL 的值为1,LATE 的值为2,ABSENT 的值为3。

// 例 5
enum Status {
    NORMAL,       // 正常
    LATE = 10,    // 迟到
    ABSENT        // 缺席
}

例5给中间的枚举成员 LATE 指定的常数为10,则 ABSENT 的值为11,那 NORMAL 的值应该为多少呢?答案是 NORMAL 的值依然为0。

字符串枚举

在一个字符串枚举里,每个成员都必须用字符串字面量,或另外一个字符串枚举成员进行初始化。

// 例 6
enum Direction {
    East = "EAST",
    South = "SOUTH",
    West = "WEST",
    North = "NORTH",
}

字符串枚举没有数字枚举的自增长行为,自然也没有像数字枚举生成方向映射。字符串枚举允许你提供一个运行时有意义的并且可读的值,独立于枚举成员的名字。

本篇完!如果文章对你有一点点帮助,请记得点个赞哦。