2016-09-07 9 views
7

Uczę się TypeScript, używając jako odnośnika this ebook. Sprawdziłem numer TypeScript Official Documentation, ale nie znajduję informacji o flagach wyliczeniowych.Co to są flagi wyliczające w TypeScript?

+1

Przykład "FileAccess" podany w dokumencie, do którego się odwołujesz. Sama strona w ebooku, do którego się odwołujesz, zawiera sekcję o nazwie "enums as flags", która opisuje to, czego szukasz, w jeszcze większej liczbie szczegółów niż poniższa odpowiedź, w tym sposób dodawania flag za pomocą '| =' itd. –

Odpowiedz

20

Są sposobem na wydajne przechowywanie i reprezentowanie zbioru wartości logicznych.

Na przykład, przy tej flagi ENUM:

enum Traits { 
    None = 0, 
    Friendly = 1 << 0, // 0001 -- the bitshift is unnecessary, but done for consistency 
    Mean = 1 << 1,  // 0010 
    Funny = 1 << 2, // 0100 
    Boring = 1 << 3, // 1000 
    All = ~(~0 << 4) // 1111 
} 

Zamiast tylko jest w stanie reprezentować pojedynczą wartość tak:

let traits = Traits.Mean; 

Możemy reprezentować wielu wartości w jednej zmiennej:

let traits = Traits.Mean | Traits.Funny; // (0010 | 0100) === 0110 

Następnie przetestuj je indywidualnie:

if (traits & Traits.Mean) { 
    console.log(":("); 
} 
+0

'let traits = Traits.Mean | Traits.Funny' teraz zmienna 'traits' będzie miała wiele wartości, jak wykonać odwrotność? Będę miał '6' jak przekonwertować na' Traits.Mean | Traits.Funny'? – Sreekumar

0

Flagi pozwalają sprawdzić, czy określony warunek z zestawu warunków jest prawdziwy. Jest to wspólny wzorzec programowania w różnych innych językach programowania, np. tutaj jest przykład o C#: Using Bitwise operators on flags

+2

Ale pytanie dotyczyło formatu TypeScript, a zwłaszcza używania flag w kontekście enum. –