TypeScriptでEnumとconst使うときのundefinedエラー
概要
TypeScriptでenum扱ってるとなんだかトランスパイルは上手くいくのに、実際に動かすとundefined的なエラーが出ちゃう問題
Playgroundで検証した様子
原因
enumをconstで定義するとトランスパイル時は問題ないけど、実行時に参照すると上手くいかないらしい。
constとenumは合わせ技で使わないようにする。const使わず素直にexport enum Enum{}的に使うか。。。
例1
enumをconstで宣言すると、実行時には上手く読めない。
enum Enum{
Hoge = 1
}
const enum ConstEnum{
Hoge = 1
}
class Sample{
public test() {
return Enum.Hoge;
}
public testConst() {
return ConstEnum.Hoge;
}
}
const sample = new Sample();
console.log("normal enum: " + sample.test());
console.log("const enum: " + sample.testConst);
/* consoleへの出力結果 */
normal enum: 1 VM35396:23
const enum: function () { VM35396:24
return 1 /* Hoge */;
}
例2
enumを呼び出す変数がconstで定義されててもダメらしい。
私はこれでつまずいた。
enum Enum{
Hoge = 1
}
const value = {
fuga: Enum.Hoge,
}
class Sample{
public test() {
return Enum.Hoge;
}
public testConstVar() {
return value;
}
}
const sample = new Sample();
console.log("normal enum: " + sample.test());
console.log("const var: " + sample.testConstVar);
/* consoleへの出力結果 */
normal enum: 1 VM35396:23
const var: function () { VM35396:25
return value;
}