2016-07-15 46 views
1

我用了很多出口語句像下面,通常在文件的底部累積模塊的出口:如何強制TypeScript導出到JS輸出的結尾?

export { foo1 as bar1, foo2 as bar2, ... } 

最近我瞭解到,...

let foo : number = 0; 
export { foo as bar } 

.. 。是不是在所有一樣......

let foo : number; foo = 0; 
export { foo as bar } 

...因爲後者在exports.bar提供未定義。發生這種情況是因爲編譯後的JavaScript在導出語句爲exports.bar = foo之前。我覺得這很不直觀。我讀過TypeScript模塊頁面,但我似乎錯過了這種行爲的描述。它在嗎?

是否有辦法強制輸出的聲明在聲明後處於底部而非正確?謝謝。

回答

1

這聽起來更像是TypeScript中的一個錯誤。對於未來的參考,打字稿1.8編譯如下代碼:

let foo : number; foo = 0; 
export { foo as bar } 

到這個JavaScript:

"use strict"; 
var foo; 
exports.bar = foo; 
foo = 0; 

我打字稿2.0測試版試了一下,好像能解決它:

"use strict"; 
var foo; 
exports.bar = foo; 
exports.bar = foo = 0; 
+0

您是對的,隨後每次使用導出對象(獨立於範圍或執行點)都會在每晚使用最新內容時更新導出對象。 TS中的模塊頁面應該說:「使用穩定的TS時,輸出除函數文字或類型以外的任何東西時要小心」。 – sgrtho