技術

[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

Macで簡単にIE環境を構築する手順

こんにちは、コーテッグの小山です。 今までちょろっとIE対応をやることはあったの …

[Rails] TinyTds::Error (closed connection)

どうも中田です。 たぶん、この記事で救われるエンジニアの方はおそらく1人いればよ …

[Rails]遷移元のURLを表示する方法

こんにちは。たなかです。 「このページから遷移してきた時は、こう処理したい」みた …

no image

【nginx】そうだ!Basic認証を掛けよう

どうも、中田です。 nginxでベーシック認証をかける方法です。 これからもよく …

テストデータで「test.com」は使うのはNG!

こんにちは。たなかです。 開発しているサービスでユーザーのseedファイルを作成 …