技術

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

関連記事

[ Rails ]ActiveRecord::RecordInvalidで怒られ、saveができない!

こんにちは。たなかです。 新しいプロジェクトの参画が決まって、今はrailsを書 …

[AWS Cli] brew install awscli が失敗!

どうも中田です awsコマンドがないよーって言われたので、再度インストールするこ …

[Cocos Creator] java.util.NoSuchElementException

どうも中田です CocosCreatorでビルド後、AndroidStudioで …

[Ionic]UnhandledPromiseRejectionWarning: CordovaError: Requirements check failed for JDK 1.8 or greater

こんにちわ。田中です。 参画しているプロジェクトで使っているのもあって、現在Io …

Dockerでwheneverが動かない (bundler: failed to load command: bin/rails (bin/rails))

どうも中田です。 久々の投稿になります。 正確にはwheneverで登録したcr …