TypeScript enumの落とし穴 その1
TypeScriptのenumは安全に使用するにあたっていくつかの落とし穴があります。
今回はenumへの数値の割当のご紹介です。
const enum MyEnum {
Hoge,
Foo,
Bar
}
let a = MyEnum.Hoge // aはMyEnum
a = MyEnum.Bar // OK
a = 100 // これがエラーにならない
上記のように一番下の100を変数に割り当ててもエラーになりません。
これを防ぐには、enumに文字列を指定します。
const enum MyEnum {
Hoge = 'Hoge',
Foo = 'Foo',
Bar = 'Bar'
}
let a = MyEnum.Hoge // aはMyEnum
a = MyEnum.Bar // OK
a = 100 // エラーになってくれる
一つでも数値があると、数値を割り当てられるようになってしまうので注意が必要です。
const enum MyEnum {
Hoge = 'Hoge',
Foo = 1, //数値がひとつでもあると、、、
Bar = 'Bar'
}
let a = MyEnum.Hoge // aはMyEnum
a = MyEnum.Bar // OK
a = 100 // これがエラーにならない。(数値が割当可能になってしまう)
最近のコメント