2017-10-08 9 views
0

JavaScriptには標準的な型の列挙型がありません。私はFlowドキュメントを参照して$ Key型を見つけましたが、ドキュメントには "enum"リスト。例:

また、列挙型リストを実装する別の方法がありますか?

class Enum { 
    constructor(keys, start = 0) { 
     return keys.reduce((obj, k) => ((obj[k] = start++), obj), {}); 
    } 
} 

console.log(new Enum(['GET', 'POST', 'DELETE'], 1)); 

出力:

答えて

1

TYPEあなたの列挙オプションを表しフロータイプです。実行時には利用できないので、Flowを使用することはできません。

代わりに、あなたは直接列挙型キーを使用することができます。

ここ
if(myObject.type === ('T_HANDLE': TYPE)){ 
    .. 
} 

、あなたが列挙型の名前を誤って入力していない('T_HANDLE': TYPE)部分のチェックを。
このように文字列リテラルを "列挙型"としてのみ使用する場合は、実際に値としてtypesコンテナを使用する必要はありません。これはちょうどうまくいく:

export type TYPE = 'T_HANDLE' | 'T_COMPUTED' | 'T_MATERIAL'; 

class MyClass { 
    type: TYPE; 

    constructor() { 
     this.type = 'T_HANDLE'; 
    } 
} 

let myObject = new MyClass(); 
if(myObject.type === ('T_HANDLE': TYPE)){ 
    .. 
} 
-1

私は一般的にそうように私自身の列挙型クラスを記述あなたの例では{ GET: 1, POST: 2, DELETE: 3 }

+0

質問がFlowtypeに関するものだとすれば、これは質問に答えていないようですか? – loganfsmyth

+0

@loganfsmyth確かに。 – Rafael

関連する問題