カラクリスタ

「輝かしい青春」なんて失かった人のブログ

TypeScript の const enum でちょろっとハマった

まあ、ハマってたと言ってもちょっとだけなんですが、

https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#94-constant-enum-declarations9.4 Constant Enum Declarations - TypeScript Spec

に書かれているconst enum の仕様を把握していなくて、

TypeScript で export した enum が undefined になってコードが動かん。なんでや?

ってなってました。 で、詳しい話は、上記リンク先のサンプルコード読めば判るんですが、今日ハマっていた内容としては、

export const enum Foo { Bar = 1 };

とかしていると、これが Foo.Bar と言う定数の宣言みたいになって、TypeScript から JavaScript へ emit する時に、 その定数みたくなっている Foo.Bar がインライン展開され JavaScript からは Foo.Bar が見えなくなる、という TypeScript の仕様にハマった、という話です。

ま、言語仕様とかはキチンと把握しとけって話ですね。はい。