技術

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

関連記事

CentOS7でDocker内部からpingができない(外部通信できない)!

どうもなかたです CentOS7にDocker入れて、Docker内部から外に向 …

no image

[JavaScript]IEのif文の判定がchromeと違う?

こんにちは、コーテッグのこやまです。 今持っている案件で、IE対応を進めているの …

[Rails] エラー unable to convert unpermitted parameters to hash について

こんにちは。佐藤です。 今回はRailsのpermit!についての備忘録です。 …

no image

[Angular]リアクティブフォームのHTML側の記法

Angularのリアクティブフォームではtsファイル側でネストした構成を組むこと …

Ionicアプリのアイコンやスプラッシュ画像を変更したい!

こんにちは。田中です。 現在Ionicを使ったアプリ開発に携わっているのですが、 …