我在打字稿中有const enum
:
const enum LogLevel {
TRACE = 0,
DEBUG = 1,
INFO = 2,
WARN = 3,
ERROR = 4,
SILENT = 5
}
根据打字稿规范,以下字段:
private foo: number = LogLevel.DEBUG;
应编译为:
this.foo = 1 /* DEBUG */;
当我从命令行(Windows)使用tsc时,它按预期工作。但是当它在webpack项目中使用awesome-typescript-loader
进行编译时(使用来自node_modules的typescript.js而不是tsc使用的tsc.js),那么枚举常量不会被内联:
this.foo = LogLevel.DEBUG;
tsc和节点模块版本都相同(2.0.2)。
我认为两者之间应该没有区别。有人知道为什么吗?
答案 0 :(得分:0)
检查你的tsconfig.json文件。如果有名称为' preserveConstEnums'的设置,请将值设置为' false'。
我查看了typescript 2.0.3 NPM-package,我只能看到我的bundle.js中的静态数字。
答案 1 :(得分:0)
原来它是由tsconfig.json中的declaration
选项引起的。如果设置为false,则两个编译会产生上述不一致的结果。但是当它设置为true时,它按预期工作。不确定为什么这面旗帜会对结果产生这样的影响。