一、枚举
枚举(Enum)是一种用于命名一组命名常数的数据类型,用enum定义。枚举通过为每个常数赋予一个有意义的名字,可以提高代码的可读性和可维护性。
枚举的规则
- 枚举可以是数字或字符串
- 数字枚举的值会自动自增
- 即使不定义枚举值,枚举也会默认第一个赋值为0,后面依次递增
- 被数字枚举约束的变量,可以直接赋值为数字
- 数字枚举的编译结果 和 字符串枚举有差异
- 枚举是
参与编译的,即最终编译时,会被打包进去- 所以枚举是可以进行遍历的
enum Gender {
man = '男',
woman = '女'
}
const man:Gender = Gender.man
Object.keys(Gender).forEach(item=>console.log(item))
二、枚举的位运算
enum Permission {
Read = 1, // 0001
Write = 2, // 0010
Create = 4, // 0100
Delete = 8 // 1000
}
//1. 如何组合权限
//使用或运算
//0001
//或
//0010
// 有1取1,没有取0
//0011
let p: Permission = Permission.Read | Permission.Write;
//2. 如何判断是否拥有某个权限
//0011
//且
//0010
// 都存在1,则取1,反之取0
//0010
function hasPermission(target: Permission, per: Permission) {
return (target & per) === per;
}
//判断变量p是否拥有可读权限
//3. 如何删除某个权限
//0011
//异或
//0010
// 都存在1取0,若仅存在1,则取0,其余取0
//0001
p = p ^ Permission.Write;
console.log(hasPermission(p, Permission.Write));