這打字稿:打字稿生成的JavaScript具有如下功能:不是一個函數
export enum UID {
FACTORY,
ROBOT
}
編譯成此javascript:
(function (UID) {
UID._map = [];
UID._map[0] = "FACTORY";
UID.FACTORY = 0;
UID._map[1] = "ROBOT";
UID.ROBOT = 1;
})(exports.UID || (exports.UID = {}));
var UID = exports.UID;
我不得不承認,代碼似乎默默無聞的我,但我相信tsc編譯器知道它在做什麼。不幸的是,JavaScript無法執行。 nodejs抱怨:
(function (UID) {
^ TypeError: object is not a function
at ...
我做了什麼錯了?
更新: Matt B.解決了這個問題。這是打字稿編譯器中的一個已知錯誤。 tsc在require語句後無法插入分號,這可能會導致奇怪的錯誤。手動將分號添加到我的代碼解決了問題。這裏的鏈接到CodePlex上的問題: http://typescript.codeplex.com/workitem/364
更新2: 對於那些你遇到同樣的錯誤。您可以手動插入缺少的分號,但這不是一個很舒服的解決方案,因爲您必須在每次編譯後執行此操作。我注意到問題只發生在枚舉上。項目中還有很多其他模塊,它們都沒有引起這個錯誤。顯然,類定義並沒有被它前面缺少的分號「傷害」。只要移動你的類定義後面的枚舉定義,錯誤就會消失。這不是足以使枚舉的接口後,因爲接口沒有直接等同,只是由編譯器
這是整個劇本嗎? – Bergi 2013-03-06 16:57:05
第二個')'(在你的錯誤信息中)不應該在那裏:'(function(UID)){'。代碼部分工作正常:http://jsfiddle.net/antisanity/cRNeN/ – canon 2013-03-06 16:59:22
該代碼適用於我。 – Pointy 2013-03-06 17:00:48