枚举是组织收集有关联变量的一种方式,通过组织特殊类型的变量,使得代码更易读。
数字类型
enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
Weekday.Monday // 0
Weekday.Tuesday // 1
数字类型的枚举默认从数值0开始,依次递增。当然也可以通过赋值的方式改变这个值
enum Weekday {
Monday=1,
Tuesday,
Wednesday,
Thursday = 2,
Friday,
Saturday,
Sunday
}
Weekday.Monday // 1
Weekday.Tuesday // 2
Weekday.Wednesday // 3
Weekday.Thursday // 2
说明:枚举值是只读的
字符串类型
enum Codes {
SUCCESS = '10000',
NO_PRO = '10002',
ERROR = '20000',
LOW_VERSION = '20001'
}
// code 是服务端返回的
if(code === Codes.LOW_VERSION) {
// 处理版本过低的逻辑
}
常量枚举
可以使用const关键字定义常量枚举
const enum Codes {
SUCCESS = '10000',
NO_PRO = '10002',
ERROR = '20000',
LOW_VERSION = '20001'
}
const success = Codes.SUCCESS // '10000'
使用常量定义枚举的好处是编译后的代码更加简洁,性能也更好一些
有静态方法的枚举
枚举类型不仅可以定义数值和字符串,使用enum + namespace
的声明的方式可以向枚举类型添加静态方法
enum Weekday {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
namespace Weekday {
// 验证是否是工作日
export function isBusinessDay(day: Weekday) {
switch (day) {
case Weekday.Saturday:
case Weekday.Sunday:
return false;
default:
return true;
}
}
}
// 使用
Weekday.isBusinessDay(Weekday.Monday); // true
Weekday.isBusinessDay(Weekday.Sunday); // false