所有分类
  • 所有分类
  • 后端开发
TypeScript基础知识:理解下TypeScript中枚举类型

TypeScript基础知识:理解下TypeScript中枚举类型

运行环境:Windows
所需软件:Word
资源类型:简历
资源下载
仅限注册用户下载,请先
解压密码:www.icz.com 使用版权:资源收集于网络,版权归原创者所有

今天,让我们学习TypeScript的基本知识,了解TypeScript中的枚举类型。这在我们写程序时经常使用。让我们了解一下。

定义

枚举是命名的整形常数的集合,用于声明一组命名常数。当一个变量有几个可能的值时,可以定义为枚举类型

一般来说,枚举是一个对象所有可能取值的集合

在日常生活中也很常见,例如,SUNDAY表示星期。、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY可视为枚举

枚举的描述类似于结构和组合,其形式如下:

enum 枚举名{
标识符①[=整形常数],
标识符②[=整形常数],

标识符N[=整形常数],
}枚举变量;

使用

枚举的使用是通过enum关键字定义的,形式如下:

enum xxx { … }

以下方式声明关键字为枚举类型:

// Directiond是一种枚举类型
let d: Direction;

类型可分为:

  • 数字枚举
  • 字符串枚举
  • 异构枚举

数字枚举

当我们声明枚举类型时,虽然它们没有被赋值,但它们的值实际上是默认的数字类型,默认从0开始积累:

enum Direction {
    Up,   // 值默认为 0
    Down, // 值默认为 1
    Left, // 值默认为 2
    Right // 值默认为 3
}
 
console.log(Direction.Up === 0); // true
console.log(Direction.Down === 1); // true
console.log(Direction.Left === 2); // true
console.log(Direction.Right === 3); // true

如果我们赋值第一个值,后一个值也会根据前一个值累加1:

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

console.log(Direction.Up, Direction.Down, Direction.Left, Direction.Right); // 10 11 12 13

字符串枚举

事实上,枚举类型的值也可以是字符串类型:

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

console.log(Direction['Right'], Direction.Up); // Right Up

假如将变量设置为字符串,后续字段也需要赋值字符串,否则报错:

enum Direction {
 Up = 'UP',
 Down, // error TS1061: Enum member must have initializer
 Left, // error TS1061: Enum member must have initializer
 Right // error TS1061: Enum member must have initializer
}

异构枚举

即将数字枚举与字符串枚举混合使用,如下:

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

通常,我们很少使用异构枚举

本质

现在枚举的案例如下:

enum Direction {
    Up,
    Down,
    Left,
    Right
}

javascript编译后如下:

var Direction;
(function (Direction) {
    Direction[Direction["Up"] = 0] = "Up";
    Direction[Direction["Down"] = 1] = "Down";
    Direction[Direction["Left"] = 2] = "Left";
    Direction[Direction["Right"] = 3] = "Right";
})(Direction || (Direction = {}));

可以看到上述代码, Direction[Direction[“Up”] = 0] = “Up”可以分成

  • Direction[“Up”] = 0
  • Direction[0] = “Up”

因此,在定义了枚举类型后,可以通过正反映射获得相应的值,如下:

enum Direction {
    Up,
    Down,
    Left,
    Right
}
 
console.log(Direction.Up === 0); // true
console.log(Direction[0]); // Up

而且多个定义的枚举可以合并,如下:

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

编译后,js代码如下:

var Direction;
(function (Direction) {
    Direction["Up"] = "Up";
    Direction["Down"] = "Down";
    Direction["Left"] = "Left";
    Direction["Right"] = "Right";
})(Direction || (Direction = {}));
(function (Direction) {
    Direction[Direction["Center"] = 1] = "Center";
})(Direction || (Direction = {}));

可见Direction对象属性重叠。

应用场景

以生活为例,使用后端返回的字段 0 – 6 此时,枚举可用于标记相应的日期,以提高代码的可读性,如下:

enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
 
console.log(Days["Sun"] === 0); // true
console.log(Days["Mon"] === 1); // true
console.log(Days["Tue"] === 2); // true
console.log(Days["Sat"] === 6); // true

包括后端日常返回0、1 等等,我们都可以通过枚举来定义,这样可以提高代码的可读性,便于后续维护。

资源下载
下载价格免费
解压密码:www.icz.com 使用版权:资源收集于网络,版权归原创者所有
运行环境:Windows
所需软件:Word
资源类型:简历
原文链接:https://www.icz.com/technicalinformation/web/javascript/typescript/2023/05/9348.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?