【基础学习笔记 enum】TypeScript 中的 enum 枚举类型介绍

因为之前网上查好多博客都是只说最基础的,所以这里记录一下,最基础的放在最后面。

这里重点要记录的是枚举成员的值可以是字符串(字符串枚举,因为网上大部分只介绍常数枚举),需要注意的一点是,和数字值不同:字符串枚举没有自增长的行为,枚举成员必须设置初始值。

字符串枚举

默认情况下,枚举成员的值是数字,但你也可以使用字符串或混合值作为枚举成员的值。比如:

enum ErrorCode {
  NotFound = "404",
  ServerError = "500",
  Unauthorized = "401"
}

console.log(ErrorCode.NotFound);  // 输出: "404"

常数枚举

常数枚举在编译时会被移除,只保留枚举成员的值。这可以减少编译后的代码量,适用于一些只需要值而不需要名称的情况。比如:

const enum Size {
  Small = "S",
  Medium = "M",
  Large = "L"
}

let selectedSize: Size = Size.Medium;
console.log(selectedSize);  // 输出: "M"

指定枚举成员的值

在枚举成员后可以显式指定其值,未指定的情况下会默认递增。比如:

enum LogLevel {
  Error = 1,
  Warn,
  Info,
  Debug
}

let currentLogLevel: LogLevel = LogLevel.Info;
console.log(currentLogLevel);  // 输出: 3

反向映射

枚举类型在编译为 JavaScript 时会生成双向映射,可以通过枚举成员的名称获取对应的值,也可以通过值获取对应的枚举成员。比如:

enum Weekday {
  Sunday,
  Monday,
  Tuesday,
  Wednesday,
  Thursday,
  Friday,
  Saturday
}

console.log(Weekday.Sunday);  // 输出: 0
console.log(Weekday[0]);      // 输出: "Sunday"

枚举作为类型

枚举类型本身可以作为类型来使用,用于约束变量的取值范围。比如:

enum Gender {
  Male,
  Female
}

interface Person {
  name: string;
  age: number;
  gender: Gender;
}

let person: Person = {
  name: "Alice",
  age: 30,
  gender: Gender.Female
};

基本用法

基本用法如下:

enum Direction {
  Up,
  Down,
  Left,
  Right
}

let userDirection: Direction = Direction.Left;
console.log(userDirection);  // 输出: 2

述代码中,Direction 枚举类型定义了四个成员:Up、Down、Left 和 Right。每个成员都会被分配一个默认的数字值,从 0 开始递增。在定义枚举变量时,可以直接使用成员名称进行赋值。

由于对enum类型用的不多,所以记录一下学习。

网上关于enum类型的说明都差不多,无非是定义的枚举成员的默认值从零开始递增,如果指定了数值就从指定的数值开始递增。在使用枚举类型时,可以像使用普通类型一样声明变量并赋予其枚举值。

在 TypeScript 中,可以使用 enum 关键字来定义枚举类型(enumeration types)。枚举类型用于定义一组命名的常量值,使代码更加可读性强、维护性高。枚举(Enum)类型用于取值被限定在一定范围内的场景,比如性别只有男和女,某个机构的部门只有固定几个(不考虑部门整编重组的情况下)。

基本用法是枚举类型的每个成员都会被分配一个默认的数字值,从 0 开始递增。在定义枚举变量时,可以直接使用成员名称进行赋值。

希望本文对您有所帮助,也希望路过的大佬不吝赐教!

相关推荐
铁匠匠匠1 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
Moliay2 小时前
【资料分析】刷题日记2
笔记·公考·行测·常识·资料分析
架构文摘JGWZ3 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
小齿轮lsl3 小时前
PFC理论基础与Matlab仿真模型学习笔记(1)--PFC电路概述
笔记·学习·matlab
Aic山鱼3 小时前
【如何高效学习数据结构:构建编程的坚实基石】
数据结构·学习·算法
qq11561487073 小时前
Java学习第八天
学习
天玑y4 小时前
算法设计与分析(背包问题
c++·经验分享·笔记·学习·算法·leetcode·蓝桥杯
2301_789985944 小时前
Java语言程序设计基础篇_编程练习题*18.29(某个目录下的文件数目)
java·开发语言·学习
橄榄熊4 小时前
Windows电脑A远程连接电脑B
学习·kind
web_learning_3215 小时前
source insight学习笔记
笔记·学习