ypeScript入门到精通——TypeScript类型系统基础——枚举类型

发布时间 2023-10-03 16:34:37作者: 左扬

TypeScript类型系统基础——枚举类型

  枚举类型由零个或多个枚举成员构成,每个枚举成员都是一个命名的常量。

  在 TypeScript 中,枚举类型是一种原始类型,它通过 enum 关键字来定义。例如,我们可以使用枚举类型来表示一年四季,示例如下:

enum Season{
    Spring,
    Summer,
    Fall,
    Winter,
}

  按照枚举成员的类型可以将枚举类型划分为以下三类:

    • 数值型枚举
    • 字符串枚举
    • 异构性枚举

1、数值型枚举

  数值型枚举是最常用的枚举类型,是 number 类型的子类型,它由一组命名的数值常量构成。定义数值型枚举的方法如下所示:

enum Direction {
    Up,
    Dwon,
    Left,
    Right
}

const direction: Direction = Direction.up;

 

  此示例中,我们使用 enum 关键字定义了枚举类型 Direction,它包含了四个枚举成员 Up、Down、Left 和 Right。在使用枚举成员时,可以像访问对象属性一样访问枚举成员。

  如果想要为枚举成员设置初始值,可以直接在成员名称后面赋值。例如,让 Up 的值为 1,其它成员的值依次递增:

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

在这个例子中,Up 的值是 1,Down 的值是 2,Left 的值是 3,Right 的值是 4。

  代码示例是一个 TypeScript 的数值型枚举。在这个示例中,Up 的值被显式设置为 1,Down 的值会自动递增为 2。然后,Left 的值被显式设置为 10,Right 的值会自动递增为 11,所以在这个例子中,各个枚举成员的值如下:

    • Up: 1
    • Down: 2
    • Left: 10
    • Right: 11

  这种自动递增的特性使得枚举在需要一组相关常量时非常方便。同时,你也可以为特定的枚举成员设置特定的值。

2、字符串枚举

  字符串枚举与数值枚举相似。在字符串枚举中,枚举成员的值为字符串。字符串枚举成员必须使用字符串字面量或另一个字符串枚举成员来初始化。字符串枚举成员没哟有自增长的行为。示例如下:
enum Direction {  
  Up = "UP",  
  Down = "DOWN",  
  Left = "LEFT",  
  Right = "RIGHT"  
}  

  在这个例子中,Up 的值是 "UP",Down 的值是 "DOWN",Left 的值是 "LEFT",Right 的值是 "RIGHT"。每个枚举成员的值都是显式指定的字符串字面量。

  与数值型枚举不同,字符串枚举成员的值不会递增。这是因为字符串枚举成员的值是字符串类型,而不是数字类型。因此,每个成员的值都必须显式指定。

  字符串枚举是 string 类型的子类型,因此允许将字符串枚举类型赋值给 string 类型。例如,下列中常量 direction 为 string 类型,可以使用字符串枚举 Direction 来初始化 direction 常量: