typescript中的常量枚举(tsc.js与typescript.js)

typescript中的常量枚举(tsc.js与typescript.js),typescript,webpack,Typescript,Webpack,我在typescript中有一个常量枚举: const enum LogLevel { TRACE = 0, DEBUG = 1, INFO = 2, WARN = 3, ERROR = 4, SILENT = 5 } 根据typescript规范,输入以下字段: private foo:number=LogLevel.DEBUG 应汇编为: this.foo = 1 /* DEBUG */; 当我从命令行(Windows)使用tsc时,它会按

我在typescript中有一个
常量枚举

const enum LogLevel {
    TRACE = 0,
    DEBUG = 1,
    INFO = 2,
    WARN = 3,
    ERROR = 4,
    SILENT = 5
}
根据typescript规范,输入以下字段:

private foo:number=LogLevel.DEBUG

应汇编为:

this.foo = 1 /* DEBUG */;
当我从命令行(Windows)使用tsc时,它会按预期工作。但是,当它在网页包项目中使用
awesome typescript loader
编译时(它使用node_模块中的typescript.js,而不是tsc使用的tsc.js),则枚举常量不会内联:

this.foo = LogLevel.DEBUG;
tsc和节点模块版本相同(2.0.2)


我认为两者之间不应该有区别。有人知道为什么吗?

检查您的tsconfig.json文件。如果存在名为“preserveConstEnums”的设置,请将该值设置为“false”


我使用typescript 2.0.3 NPM包进行了检查,在bundle.js中只能看到静态数字。

结果表明,这是由tsconfig.json中的
声明
选项引起的。如果设置为false,则两个编译将产生上述不一致的结果。但当它设置为true时,它会按预期工作。不知道为什么这个标志会对结果产生如此大的影响