2016-09-07 8 views
7

this ebookを参考にしてTypeScriptを学習しています。 TypeScript Official Documentationを確認しましたが、enumフラグについての情報は見つかりません。TypeScriptの列挙型フラグとは何ですか?

+1

参照しているドキュメントにある 'FileAccess'の例がこれの例です。あなたが参照している電子ブックの一番上のページには、 "enums as flags"というセクションがあり、あなたが探しているものを説明していますが、 '| ='などを使ってフラグを追加する方法を含め、以下の答えよりも詳細です。 –

答えて

20

これは、ブール値のコレクションを効率的に保存して表現する方法です。我々は、単一の変数に複数の値を表すことができる

let traits = Traits.Mean; 

:だけなのでような単一の値を表現することができるという代わり

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 
} 

:このフラグ列挙を取る例えば

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

次に、個別にテストしてください:

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

'let traits = Traits.Mean | Traits.Funny'は 'traits'変数に複数の値を持つようになりました。逆を行う方法は?私は 'Traits.Mean |特性。ファニー? – Sreekumar

0

フラグを使用すると、一連の条件から特定の条件が満たされているかどうかを確認できます。これは、様々な他のプログラミング言語における一般的なプログラミングパターンである。ここにC#の例があります:Using Bitwise operators on flags

+2

しかし、問題はTypeScriptについてであり、具体的にはenumコンテキストでフラグを使用することでした。 –

関連する問題