TypeScriptのenumのドキュメント(TypeScript Deep Dive)をみていて、
調べていてちょっと気になることがありました。
文字列代入のときに値からキー取れるの?半信半疑なので試してみました。
RailsのEnumを使っている感じだといけそうだけどどうだろうかと。
まずは代入しないタイプのenumです。
enum FruitEnum {
Banana,
Melon
}
console.log(FruitEnum['Banana'])
// 0
console.log(FruitEnum[0])
// Banana
次に代入型のenumです。
enum VegetablEnum {
Tomato = 'red',
Cabbage = 'green'
}
これ見るといけなさそう…
Tomato: ‘red’みたいな記法だといけそうですけどね。
console.log(VegetablEnum.Tomato) // red console.log(VegetablEnum['red']) // undifined
取れませんね。
それぞれ出力して見ると、構造が違いました。
これ見ると、わかりやすいですね。
console.log(FruitEnum)
// {0: "Banana", 1: "Melon", Banana: 0, Melon: 1}
console.log(VegetablEnum)
// {Tomato: "red", Cabbage: "green"}
ちなみにjsにするとこんな感じになっているみたいです。
var Sample;
(function (Sample) {
Sample[Sample["hoge"] = 0] = "hoge";
})(Sample || (Sample = {}));
console.log(Sample['hoge']);
// 1
var Simple;
(function (Simple) {
Simple["hoge"] = "fuga";
})(Simple || (Simple = {}));







