enum Permission {
Read = 1, // 0001
Write = 2, // 0010
Create = 4, // 0100
Delete = 8, // 1000
}
// 组合权限
// 两个数字换算成二进制后进行的运算
// 0001 | 0100 得 0101
let p: Permission = Permission.Read | Permission.Create;
// 如何判断包含某个权限? 判断tarage是否包含per
// 使用 & 且运算
function hasPermission(target: Permission, per: Permission): Boolean {
return (target & per) === per;
}
// p = 0101,Permission.Create = 0100
// > (0101 & 0100) = 0100
// > (0101 & 0100)=== 0100 返回 true, 存在该权限
console.log("权限判断-Create", hasPermission(p, Permission.Create)); // true
// 如何删除权限
// 使用 ^ 运算符
// 0101 ^ 0100 = 0001 (0001 === Permission.Read)
// Create权限就被去除了,只剩下了Read权限
p = p ^ Permission.Create;
console.log("权限判断", hasPermission(p, Permission.Create)); // false
逻辑位运算符用法
http://c.biancheng.net/view/5469.html