13
ES6でのJavaScriptの列挙型
私はJavascriptで古いJavaプロジェクトを再構築していて、JSで列挙型を行う良い方法がないことに気づきました。 私が思いつくことができる最高のものは: const Colors = { RED: Symbol("red"), BLUE: Symbol("blue"), GREEN: Symbol("green") }; Object.freeze(Colors); const続けてColors再割り当てされているから、それがキーと値を変異防止凍結します。私はシンボルを使用しているので、それColors.REDはと等しくない0か、それ以外のものは何でもありません。 この処方に問題はありますか?もっと良い方法はありますか? (私はこの質問が少し繰り返されることを知っていますが、以前のすべてのQ / Aはかなり古く、ES6はいくつかの新しい機能を提供します。) 編集: シリアル化の問題を処理する別の解決策ですが、まだレルムの問題があると思います。 const enumValue = (name) => Object.freeze({toString: () => name}); const Colors = Object.freeze({ RED: enumValue("Colors.RED"), BLUE: enumValue("Colors.BLUE"), GREEN: enumValue("Colors.GREEN") }); 値としてオブジェクト参照を使用することにより、シンボルと同じ衝突回避が得られます。