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 так как позволяет сделать наиболее быстрые проверки.


Похожие записи

Axios или fetch

Сравнение на примере GET/POST запросов, обработке ошибок и возможности задавать базовую конфигурацию.

RxJS Pipeable Operators

Начиная с версии rxjs 5.5 операторы вместо цепочки вызовов применяются как параметры функции pipe.