举例子说明TypeScript的Enum枚举类型?

TypeScript中的枚举(Enum)类型是对JavaScript标准数据类型的一个补充,用于为一组数值赋予更友好的名字。枚举类型是组织相关值的一种方式,使代码更易于阅读和维护。

数字枚举

数字枚举会自动给成员赋值,从0开始递增。你也可以手动指定成员的数值。

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

console.log(Direction.Up); // 输出:1
console.log(Direction.Left); // 输出:3

在上面的例子中,Direction枚举的Up成员被赋值为1,随后的Down, Left, Right依次被赋值为2, 3, 4

字符串枚举

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

enum FileAccess {
    Read = "READ",
    Write = "WRITE",
    ReadWrite = "READ_WRITE"
}

console.log(FileAccess.Read); // 输出:"READ"

字符串枚举提供了一种更具描述性的方式来定义一组常量。

异构枚举(Heterogeneous enums)

虽然不常见,但枚举可以混合字符串和数字成员。

enum BooleanLikeHeterogeneousEnum {
    No = 0,
    Yes = "YES",
}

console.log(BooleanLikeHeterogeneousEnum.No); // 输出:0
console.log(BooleanLikeHeterogeneousEnum.Yes); // 输出:"YES"

计算的和常量成员

枚举可以包含计算的和常量成员。

enum E {
    A,
    B,
    C = Math.random(),
    D = "123".length,
}

console.log(E.A); // 输出:0
console.log(E.B); // 输出:1
console.log(E.C); // 输出:一个随机数
console.log(E.D); // 输出:3

在上面的例子中,AB是常量成员,而CD是计算的成员。

枚举成员类型和联合枚举类型

枚举类型本身成为每个枚举成员的类型。

enum ShapeKind {
    Circle,
    Square,
}

interface Circle {
    kind: ShapeKind.Circle;
    radius: number;
}

interface Square {
    kind: ShapeKind.Square;
    sideLength: number;
}

let c: Circle = {
    kind: ShapeKind.Circle,
    radius: 100,
}

在这个例子中,kind属性用来明确指定接口的类型,这是利用了TypeScript的字面量类型和枚举成员类型的特性。

枚举是TypeScript中用于增强代码的可读性和可维护性的强大特性。通过使用枚举,你可以定义一组命名的常数,使代码更清晰和易于理解。

发表评论

后才能评论