2017-08-30 25 views
2

文字列ベースの列挙型(TypeScript 2.4以降でサポートされています)があります。文字列を対応する列挙型の値に変換する最も良い方法は何ですか(存在する場合は?)。存在しない場合は、値をデフォルトに設定しても問題ありません。文字列ベースの列挙型の変換Typescript 2.4+

export enum Theory { 
    RLJ = 'r + l = j', 
    WinterIsComing = 'winter is coming', 
    TyrionIsAarysSon = 'i buy it', 
    YoungGriffIsReal = 'doubtfull' 
} 

私は、次のことから始めましたが、これはうまくいきません。

function getTheory(theoryString: string): Theory { 
    let theory: Theory = Theory.RLJ; 
    if (theoryString in Theory) { 
    theory = theoryString as Theory; 
    } 

    return theory; 
} 

名の列挙値のマップを作成し、逆引き参照を行うことであろううまくいくかもしれないアプローチが、それは必要ではないはずと思われる(またはその活字体がより良いアプローチが組み込まれています) 。

答えて

0

私はあなたが望むものを達成できないと思います。 (安全でない)

function isTheSameTheory(theoryString: string, t: Theory) { 
    return theoryString === t; 
} 

またはこの:私はあなたを与えることができる最高のは、このようなものである

function toTheory(theoryString: string) { 
    return theoryString as Theory; 
} 
関連する問題