[TypeScript] enumの挙動(修正ずみ)

2013/08/9

こんにちは。きんくまです。

※2013/08/10修正
コメントいただきました!

以下の情報は先日公開されたTypescript 0.9.1で直ってました。
どうやら0.9.0だけのようです!

以下もと記事です
———————————

今回はTypeScriptのenumの挙動についてです。

C言語の場合

C言語だと(ひょっとしたらコンパイラに依存するかも。今回はLLVM)

enum Color{
    Red,
    Green,
    Purple,
    Blue,
    Yellow
};

と書いたときは、

Red -> 0
Green -> 1,
Purple -> 2,
Blue -> 3,
Yellow -> 4

となって、0スタートではじまって、1ずつインクリメントされます。

enum Color{
    Red,
    Green,
    Purple = 8,
    Blue,
    Yellow
};

上のように途中で値を設定すると

Red -> 0
Green -> 1,
Purple -> 8,
Blue -> 9,
Yellow -> 10

そこで値がリセットされてそこからまた1ずつインクリメントされていきます。

で、この挙動に慣れていたので、TypeScriptのenumがちょっと違ってたのでその話です。

TypeScriptのenum

    export enum Color{
        Red,
        Green,
        Purple,
        Blue,
        Yellow
    }

0.9.0のコンパイラだと

Color.Red -> 0
Color.Green -> 1,
Color.Purple -> 2,
Color.Blue -> 3,
Color.Yellow -> 4

これはCと同じです。

    export enum Color{
        Red,
        Green,
        Purple = 8,
        Blue,
        Yellow
    }

これが違っていて、

Color.Red -> 0
Color.Green -> 1,
Color.Purple -> 8,
Color.Blue -> 0,
Color.Yellow -> 1

値指定したあと、その数値を基準にインクリメントされずに、また0に戻る仕様になってました。
うーん、ちとメンドい仕様かも。


自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る