2017-06-13 62 views
1

我在原來的TS文件(foo.ts),我有這樣的:打字稿編譯器完成操作打字稿枚舉編譯到兩個d.ts和Javascript輸出

export const enum ACCESS_STATE { 
    master, 
    readonly, 
    none, 
    failed 
} 

後,輸出(foo.d.ts)文件中正確包含此:

const enum ACCESS_STATE { 
    master = 0, 
    readonly = 1, 
    none = 2, 
    failed = 3, 
} 

然而,得到的輸出(foo.js)文件沒有提及ACCESS_STATE或其值在所有。這在foo.js中並不是問題,因爲編譯器會正確替換ACCESS_STATE.master以及其他引用的硬值0(等)。

問題是,我有其他javascript模塊,需要富,並希望重用該枚舉。

是否有可能讓編譯器在foo.js中生成可引用且可用的內容?如:

var ACCESS_STATE = (function() { 
    function ACCESS_STATE() { 
     this.master = 0; 
     this.readonly = 1; 
     this.none = 2; 
     this.failed = 3 
    } 
    return ACCESS_STATE ; 
}()); 
foo.ACCESS_STATE = ACCESS_STATE ; 

爲什麼這不是編譯器的默認行爲生成可重複使用的那種東西,可以在枚舉值的參考替代品(這是通常通過使用意枚舉)?

回答

2

documentation

常量枚舉只能使用常量表達式枚舉而不像常規 枚舉它們在編譯過程中完全去除。

要使用JavaScript中的枚舉代碼,您需要從export const enum中刪除const。或者,您可以使用--preserveConstEnums選項編譯代碼。

+0

我刪除了'const'關鍵字,它適用於我的情況。感謝您提供可能的解決方案。 –