考慮:爲什麼枚舉轉換成函數?
enum Colors {
Red,
Green,
Blue
}
它transpiles到這一點:
這個結果var Colors;
(function (Colors) {
Colors[Colors["Red"] = 0] = "Red";
Colors[Colors["Green"] = 1] = "Green";
Colors[Colors["Blue"] = 2] = "Blue";
})(Colors || (Colors = {}));
大多數問題在Enums in TypeScript: what is the JavaScript code doing?作了解答。
我引用的答案:
這是一個 '立即執行功能'
進一步壓低話題:
認爲他們很可能只是走:
var Colors; Colors || (Colors = {}); Colors[Colors["Cyan"] = 3] = "Cyan"; // ...
並跳過關閉,但也許我仍然失去了一些東西。
所以問題仍然存在:爲什麼將這個包裝在一個立即執行的函數中?
這裏有一個非常詳細的解釋:https://basarat.gitbooks.io/typescript/content/docs/enums.html – DSCH
@DSCH你的鏈接沒有解決爲什麼需要關閉的問題。 –
最可能的解釋是,這只是個人偏好的問題,無論誰寫這部分譯員。 – JJJ