TypeScipt枚举类型

TypeScript 中,枚举(Enum)是一种用于表示一组命名的常量集合的数据类型。它是一个有助于提高代码可读性和可维护性的工具。

枚举的类型

数字定义枚举

// 使用关键字 enum 定义枚举
enum Direction {
  North,
  South,
  East,
  West,
}
// 使用枚举成员
let myDirection: Direction = Direction.North;
console.log(myDirection); // 输出: 0

增长枚举

enum Direction {
    North=3,
    South,
    East,
    West,
}
//输出值为4
console.log(Direction.South)

字符串枚举

// 字符串枚举
enum Color {
  Red = "RED",
  Green = "GREEN",
  Blue = "BLUE",
}

let myColor: Color = Color.Green;
console.log(myColor); // 输出: "GREEN"

字符串枚举允许使用字符串值而不是数字值。

const枚举

const 枚举是在编译时被移除的,因此它的存在不会导致实际的 JavaScript 代码输出。这种枚举形式仅用于在编译阶段进行常量的内联替换,以提高性能并减小输出文件的大小。

const枚举用法

const enum Direction {
  North,
  South,
  East,
  West,
}

let myDirection: Direction = Direction.North;
console.log(myDirection); // 输出: 0

反向映射:

enum Weekday {
  Monday = 1,
  Tuesday,
  Wednesday,
  Thursday,
  Friday,
}

console.log(Weekday[2]); // 输出: "Tuesday"

TypeScript 的枚举在编译为 JavaScript 时会生成反向映射,允许通过枚举值获取对应的枚举成员名字。

枚举的实现场景有哪些?

HTTP 请求方法

enum HttpMethod {
  GET = "GET",
  POST = "POST",
  PUT = "PUT",
  DELETE = "DELETE",
}

用于表示 HTTP 请求方法,字符串枚举在这里更适用,因为 HTTP 方法通常以字符串形式存在。

js中有枚举吗?ts编译枚举为js是怎么编译的?

在原始的 JavaScript(JS)中,并没有官方的枚举类型。JavaScript 主要使用对象或常量来表示一组相关的常量集合。枚举是一种由 TypeScript 引入的静态类型语言的特性。

在 TypeScript 中,当你使用枚举时,它在编译为 JavaScript 时会生成相应的代码。具体的编译结果取决于枚举的类型和声明方式。

  1. 数字枚举:
    对于数字枚举,它会被编译为普通的 JavaScript 对象,例如:
TypeScript
enum Direction {
  North,
  South,
  East,
  West,
}

// 编译后的 JavaScript
var Direction;
(function (Direction) {
  Direction[Direction["North"] = 0] = "North";
  Direction[Direction["South"] = 1] = "South";
  Direction[Direction["East"] = 2] = "East";
  Direction[Direction["West"] = 3] = "West";
})(Direction || (Direction = {}));

这里,Direction 被编译成了一个对象,它包含了两部分:数字值到枚举成员名字的映射,以及枚举成员名字到数字值的反向映射。

  1. 字符串枚举:
    对于字符串枚举,编译结果会直接使用字符串字面量,例如:
// TypeScript
enum Color {
  Red = "RED",
  Green = "GREEN",
  Blue = "BLUE",
}

// 编译后的 JavaScript
var Color;
(function (Color) {
  Color["Red"] = "RED";
  Color["Green"] = "GREEN";
  Color["Blue"] = "BLUE";
})(Color || (Color = {}));

字符串枚举的编译结果更为简单,直接将枚举成员名字映射到字符串字面量。

  1. const 枚举:
    对于 const 枚举,它会在编译后被完全移除,只留下实际的值。这种方式有助于提高性能和减小输出文件的大小。
// TypeScript
const enum Direction {
  North,
  South,
  East,
  West,
}

// 编译后的 JavaScript(完全移除)
  • 22
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值