技術

[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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

[XCode] clang: error: linker command failed with exit code 1

どうも中田です 本日はシンプルに。 XCodeでbuild時に発生しました。 エ …

no image

【AWS】mysqldump&S3バックアップ。それは一瞬の出来事

こんにちは、中田です。 RDSでしっかりとバックアップ! とまでしなくていい場合 …

[ Ionic ]キーボード出現時にフッターを押し上げてしまう問題の対応

こんにちは。たなかです。 IonicFrameworkでモバイルアプリを開発させ …

no image

【ionic】ナビゲーションバーがちらつく

どうも、中田です。 ionicでアプリを作っていて、なんかナビゲーションバーがち …

no image

【Rails】kaminariさんって配列もいけるんですね

どうも中田です。 久しぶりのブログになります。 railsでページングをする場合 …