在看 TypeScript Deep Dive,里面介绍一个 enum 定义成位运算的操作感觉非常简洁清晰
相关链接:
https://basarat.gitbook.io/typescript/type-system/enums#number-enums-as-flags
enum AnimalFlags {
None = 0,
HasClaws = 1 << 0,
CanFly = 1 << 1,
EatsFish = 1 << 2,
Endangered = 1 << 3
}
然后可以用 &
运算作判断和整合,类似掩码的思路
type Animal = {
flags: AnimalFlags
}
function printAnimalAbilities(animal: Animal) {
var animalFlags = animal.flags;
if (animalFlags & AnimalFlags.HasClaws) {
console.log('animal has claws');
}
if (animalFlags & AnimalFlags.CanFly) {
console.log('animal can fly');
}
if (animalFlags == AnimalFlags.None) {
console.log('nothing');
}
}