2016-09-26 203 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中的靜態數字。