一步一步学习TypeScript(09.enums_枚举)

本文深入探讨TypeScript中的枚举类型,包括基本用法、枚举与数字的关系、内部实现原理及常量枚举的应用。通过示例展示了如何正确使用枚举,并介绍了使用常量枚举来提高代码效率的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前在,一步一步学习TypeScript(02.基本类型)这篇中,初步学习了enum类型.这篇是对enum类型的一些补充.
看一些例子:

Enums
enum Color {
    Red,
    Green,
    Blue
}

var colorValue = Color.Red;
colorValue = "2"; //错误, enum 值为number类型,并且是从0开始的,所以赋值string会得到一个错误
Enums 和 Numbers

TypeScript enum类型是基于number的,所以可以使用number类型变量对其赋值

enum Color {
    Red,
    Green,
    Blue
}

var colorValue = Color.Red;
colorValue = 2; //OK, colorValue隐式转为了number类型
Enums 内部原理

我们打开之前编译好的js文件

var Color;
(function (Color) {
    Color[Color["Red"] = 0] = "Red";
    Color[Color["Green"] = 1] = "Green";
    Color[Color["Blue"] = 2] = "Blue";
})(Color || (Color = {}));

Color[Color["Red"] = 0] = "Red" 这行等价于
Color["Red"] = 0;Color[0] = "Red";

它的意思就是我们可以在TS中这么使用enum:

enum Color {
    Red,
    Green,
    Blue
}

console.log(Color["Red"]);     // 0
console.log(Color[0]);         // "Red"
console.log(Color[Color.Red]); // "Red" 因为 `Color.Red == 0`

可以定义两个同名的enum,但是其中一个enum必需设置一个初始标识

enum Color {
    Red,
    Green,
    Blue
}

enum Color {
    DarkRed = 3,
    DarkGreen,
    DarkBlue
}
Const Enums

使用const修饰enum

const enum Color {
    Red,
    Green,
    Blue
}

var value = Color.Red;

查看其编译后的js

var value = 0 /* Red */;

使代码量减小的同时在运行速度上也会有提高.

大家同样可以看 https://basarat.gitbooks.io/typescript/content/docs/enums.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值