当前位置: 首页 > news >正文

TypeScript -枚举知识点详解

TypeScript -枚举知识点详解

在 TypeScript 中,枚举(Enums)是一种特殊的类型,它允许你为一组数值赋予友好的名称。枚举可以被分为两类:数字枚举字符串枚举。以下是 TypeScript 中枚举的详细知识点:

1. 数字枚举

数字枚举是默认的枚举类型,成员会被赋予一个数字值,从 0 开始递增。

enum Color {Red,Green,Blue
}console.log(Color.Red); // 0
console.log(Color.Green); // 1
console.log(Color.Blue); // 2

2. 指定数字值

你可以为枚举的成员指定特定的数字值。

enum Color {Red = 1,Green,Blue
}console.log(Color.Red); // 1
console.log(Color.Green); // 2
console.log(Color.Blue); // 3

3. 字符串枚举

字符串枚举允许你为每个成员指定一个字符串值。

enum Color {Red = "red",Green = "green",Blue = "blue"
}console.log(Color.Red); // "red"
console.log(Color.Green); // "green"
console.log(Color.Blue); // "blue"

4. 常量枚举

使用 const 枚举,所有枚举成员的值在编译时就已确定,并且不可更改。

const enum Color {Red = "red",Green = "green",Blue = "blue"
}// 只能通过枚举类型本身来访问成员
console.log(Color.Red); // "red"
// 下面的方式是不允许的
// let c: string = Red;

5. 反向映射

在数字枚举和常量枚举中,你可以反向映射枚举值到枚举成员名。

enum Color {Red,Green,Blue
}console.log(Color[0]); // Color.Red
console.log(Color[1]); // Color.Green
console.log(Color[2]); // Color.Blue

6. 计算成员值

枚举成员的值可以是表达式的结果。

enum Color {Red = 2 ** 0,Green = 2 ** 1,Blue = 2 ** 2
}console.log(Color.Red); // 1
console.log(Color.Green); // 2
console.log(Color.Blue); // 4

7. 枚举作为类型

枚举的类型可以被用来定义变量的类型。

let color: Color = Color.Red;

8. 枚举成员作为类型

在 TypeScript 2.4 及更高版本中,你可以使用枚举成员作为类型,这允许你创建具有固定值集合的变量。

enum Color {Red = "red",Green = "green",Blue = "blue"
}function getBackgroundColor(color: Color.Red): string {return color;
}let backgroundColor = getBackgroundColor(Color.Red);

9. 合并枚举

在 TypeScript 中,你可以合并具有相同根类型的枚举。

enum Status {Pending,Resolved
}enum Status {Rejected
}// Status 现在包括 Pending, Resolved 和 Rejected

10. 枚举的键和值

枚举的键是枚举成员的名称,值是与这些名称关联的数字或字符串。

enum Color {Red, Green, Blue
}console.log(Color["Red"]); // 0
console.log(Color.Red); // Color.Red

11. 枚举和对象字面量

枚举可以被看作是一种特殊的对象字面量,其中键是枚举成员的名称,值是成员的值。

const enum Color {Red = "red",Green = "green",Blue = "blue"
}const colorObject: { [key: string]: any } = Color;

枚举提供了一种方便的方式来组织和使用一组相关的常量值,它们在 TypeScript 中广泛用于配置、状态码、方向、颜色等场景。通过使用枚举,你可以使代码更加清晰、易于维护和扩展。


http://www.mrgr.cn/news/60658.html

相关文章:

  • JVM学习之路(3)类加载器
  • 基于SSM+微信小程序的汽车预约维修管理系统(汽车3)
  • 排查PHP服务器CPU占用率高的问题
  • nginx------正向代理,反向代理生产,以及能否不使用代理详解
  • 【C++】STL初识
  • 微信小程序 setData数据量过大的解决与分页加载的实现
  • labelimg使用教程
  • Springboot整合spring-boot-starter-data-elasticsearch
  • C++入门基础知识129—【关于C 库函数 - time()】
  • 论可以对抗ai编程的软件开发平台(直接把软件需求描述变成软件的抗ai开发平台)的设计
  • Java:String类(超详解!)
  • Vue3与pywebview前后端初步通信
  • java保留两位小数
  • 10月28日,每日信息差
  • Python xlrd库介绍
  • stm32入门教程--DMA
  • Python:现代编程的必备技能
  • 程序设计挑战赛A卷
  • CXL与近内存计算结合,会发生什么?--part2
  • 流量特征分析-常见攻击事件 tomcat
  • python3的基本数据类型:List(列表)创建与索引
  • 存储引用服务(OSS)Minio 环境搭建
  • 审阅员工聊天行为|企业该怎么审阅员工的聊天行为?5个方法分享(实用+收藏)
  • 当代年轻人的“发疯文学”也能涨粉变现!报价¥2w+的笔记,你也能做!
  • 长思维PRM
  • 浅析Android View绘制过程中的Surface