枚举总结

枚举(Enum)在编程中用于定义有限集合的类型,本文详细介绍了枚举的使用,包括给枚举项手动赋值、常数项与计算所得项的区分、常数枚举的特性以及外部枚举在编译时的作用。

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

枚举

  • 概述:枚举(Enum)类型用于取值被限定在一定范围内的场景,比如一周只能有七天。
enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat};

1.给枚举项手动赋值:

enum Days {Sun = 7, Mon = 1, Tue, Wed, Thu, Fri, Sat};
 
console.log(Days["Sun"] === 7);  
console.log(Days["Mon"] === 1);  
 
// 当然,手动赋值的枚举项也可以为小数或负数,此时后续未手动赋值的项的递增步长仍为 1
 
enum Days {Sun = 7, Mon = 1.5, Tue, Wed, Thu, Fri, Sat};
 
console.log(Days["Sun"] === 7);  
console.log(Days["Mon"] === 1.5); 

2.常数项和计算所得项

  • 概述:枚举项有两种类型:常数项和计算所得项

(1)一个典型的计算所得项的例子(如果紧接在计算所得项后面的是未手动赋值的项,那么它就会因为无法获得初始值而报错)

enum Color {Red, Green, Blue = "blue".length};  // 正确
enum Color {Red = "red".length, Green, Blue};  // 错误

3.常数枚举

  • 概述:常数枚举是使用 const enum 定义的枚举类型

(1)常数枚举与普通枚举的区别是,它会在编译阶段被删除,并且不能包含计算成员

const enum Directions { Up, Down, Left, Right }
let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right];
 
//编译成js后
var directions = [0 /* Up */, 1 /* Down */, 2 /* Left */, 3 /* Right */];

(2)假如包含了计算成员,则会在编译阶段报错

const enum Color {Red, Green, Blue = "blue".length}; // error: In 'const' enum declarations member initializer must be constant expression

4.外部枚举

  • 概述:外部枚举是使用 declare enum 定义的枚举类型

(1)declare 定义的类型只会用于编译时的检查,编译结果中会被删除

declare enum Directions { Up, Down, Left, Right }
let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right];
 
//编译成js后
var directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right];

(2)外部枚举和常数枚举同时使用

declare const enum Directions { Up, Down, Left, Right }
let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right];
 
//编译成js后
var directions = [0 /* Up */, 1 /* Down */, 2 /* Left */, 3 /* Right */];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值