[AngularJS] 文字列をenumに変換したい時はテーブルを使う

みなさんこんにちは、ちょっとした文字列を受け取って、自分たちが定義したenum(列挙型)に変換したいときってありますよね?そういう時は、ぜひJavascriptのオブジェクトリテラルを利用してみましょう。プログラミング用語のカタカナって難しいですよね。リテラルは、定義という意味らしいです。ようするうにオブジェクトの定数。今回ここで、紹介したいのは、文字列とenumをテーブル(表)っぽい感じでのオブジェクトで定数として定義してします。

オブジェクトリテラルとは?

説明は省略します。ググってください。たくさん参考になるサイトがありますよ!たとえばここ!!それでは、まずenumを定義してみます。

export enum eOsakana
{
    None,
    Maguro,
    Sake
}

お魚のenumを作ってみました。これでeOsakana.sakeとかして普段は使えるわけですね。exportって書いているとほかのクラスからも使えます。もしどこかの誰かがMaguroという文字列を渡してきた場合に、eOsakana.Maguroを返したいと思った場合には、switchやif分で書こうかなって気になりますが。せっかくなのでオブジェクトリテラルを使ってみましょう。

 

const osakanaMap: { [name: string]: eOsakana } = {
    None: eOsakana.None,
    Maguro: eOsakana.Maguro,
    Sake: eOsakana.Sake,
};

こんな感じで書きます。

利用する場合は、osakanaMap[value]です。このvalueのところはもちろん、文字列を入れてください。これでEnumが返ってきます。あまりJavascriptを扱ったことがない人から見るととっつきにくい感じがしますけど。慣れましょう。

さいごに

速度ははかっていないですが、きっとifで分岐するような関数を作るよりは早いはずです。ぜひ使ってみて下さい。

最新情報をチェックしよう!