Categories
Programming

Simpler TypeScript Bit Flags

I wrote about bit flags a while ago, demonstrating that you can use an enum in TypeScript along with “powers of two” to create flags:

export enum StepType {
    Given = 1,
    When = 2,
    Then = 4
}

These can then be combined and tested using bitwise operations.

var example = StepType.When | StepType.Then;

var isGiven = (example & StepType.Given) == StepType.Given; // false

var isWhen = (example & StepType.When) == StepType.When; // true

Well, if you can’t be bothered with multiplication, you can simplify your life using a left shift along with simple sequential numbers. The example below is equivalent to the original example (and is taken from the TypeSpec BDD framework for TypeScript).

export enum StepType {
    Given = 1 << 0,
    When = 1 << 1,
    Then = 1 << 2
}