这打字稿:打字稿生成的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