技術

[TypeScript]enumを代入記法で書いた場合に、値からキーが取れるか調べてみた。

投稿日:

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 = {}));

-技術
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

auto_incrementの値を確認して変更

こんにちは、コーテッグのこやまです。 railsとmysqlを使っていて、自動で …

no image

TypescriptでMap使用時にコンパイルエラー

こんにちは 連想配列で重複を省く処理をしたい時にMapを使用することがあります。 …

LINE BOTを無料で試してみました。heroku + Rails

こんばんは たまにはエンジニアっぽいところを見せようと思い、遅ればせながら、流行 …

Siriに笑って欲しいから [iOS 11、macOS High Sierra](「Siri」の笑い声まとめ)

iPhone Xが発売されて巷はiPhone Xの記事ばかり。 なんとなく見てい …

no image

nginxにX-Robots-Tagを設定する

こんにちは 検索結果にページが表示されないようにするために metaタグには & …