扩展类型-枚举类型

扩展类型:类型别名、枚举、接口、类。

字面量类型的问题

  1. 在类型约束位置,会产生重复代码,可以使用类型别名解决该问题
  2. 逻辑含义和真实的值产生了混淆,会导致修改真实的值的时候,产生大量的修改
  3. 字面量类型不会进入到编译结果,比如我们想循环便利它的值,那么就不行。

所以需要使用枚举

如果定义一个枚举

enum Gender{
	male = "男",
	female = "女"
}
Gender.male
Gender.female

枚举的规则

  1. 枚举字段的值只能是 字符串或者数字
  2. 数字枚举的值,会自动自增。不指定初始值,那么从 0 开始。
enum Level {
	level1 = 1,
	level2,
	level3
}
// 数字枚举编译后的结果跟字符串不太一样,以上面的为例
// 编译后
{
	level1: 1,
	level2: 2,
	level3: 3,
	1: level1,
	2: level2,
	3: level3
}

最佳实践

  1. 尽量不要在一个枚举中,即出现数字,又出现字符串
  2. 使用枚举的时候,尽量使用枚举的名称

枚举的位运算

类似于 react 源码中,类型的判断,通过位运算,给予权限

enum Permission {
	Read = 1,
	Write = 2,
	Create = 4,
	Delete = 8
}
// 组合权限:let p = Permission.Read | Permission.Write
// 判断是否拥有某个权限: let flag = p & Permission.Read
// 删除某个权限: p = p ^ Permission.Read
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值