TypeScript Enum Flags (bitmask)
Объявление
enum FileAccess {
None, // 000
Read = 1 << 1, // 001
Write = 1 << 2, // 010
Execute = 1 << 3, // 100
ReadWrite = Read | Write, // 011
}
Использование
let f = FileAccess.Read;
// добавить флаг
f |= FileAccess.Execute; // === ReadExecute
// проверить наличие
f & FileAccess.Execute // true
// убрать флаг
f &= ~FileAccess.Read; // === Execute
Используется в недрах Angular для NodeFlags так как позволяет сделать наиболее быстрые проверки.