2016-09-26 124 views
1

我有一个打字稿const enum常量枚举(tsc.js VS typescript.js)

const enum LogLevel { 
    TRACE = 0, 
    DEBUG = 1, 
    INFO = 2, 
    WARN = 3, 
    ERROR = 4, 
    SILENT = 5 
} 

基础上打字稿规范中以下字段:

private foo: number = LogLevel.DEBUG;

应编译为:

this.foo = 1 /* DEBUG */; 

当我使用tsc命令li ne(Windows)按预期工作。但是,当它是在项目的WebPack(使用typescript.js从与之相对应的是使用TSC的tsc.js node_modules)与awesome-typescript-loader编译,然后枚举常量是没有得到内联:

this.foo = LogLevel.DEBUG; 

tsc和节点模块版本都是相同的(2.0.2)。

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

回答

0

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

0

检查您的tsconfig.json文件。如果有名为'preserveConstEnums'的设置,请将该值设置为'false'。

我检查了打字稿2.0.3 NPM包,我只能看到我的bundle.js中的静态数字。