lhk*_*lhk 1 javascript compiler-construction node.js typescript
这个打字稿:
export enum UID {
FACTORY,
ROBOT
}
Run Code Online (Sandbox Code Playgroud)
编译到这个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;
Run Code Online (Sandbox Code Playgroud)
我不得不承认代码似乎对我来说相当模糊,但我相信tsc编译器知道它在做什么.不幸的是,javascript无法执行.nodejs抱怨说:
(function(UID){
^ TypeError:object不是函数
Run Code Online (Sandbox Code Playgroud)at ...
我做错了什么?
更新:马特B.解决了这个问题.这是typescript编译器中的已知错误.tsc在require语句后无法插入分号,这可能会导致奇怪的错误.手动将分号添加到我的代码中解决了问题.这是codeplex问题的链接:http: //typescript.codeplex.com/workitem/364
更新2: 对于那些遇到相同错误的人.您可以手动插入缺少的分号,但这不是一个非常舒服的解决方案,因为您必须在每次编译后执行此操作.我注意到问题只发生在enum上.项目中有许多其他模块,但没有一个模块导致此错误.显然,类定义不会被前面缺少的分号"伤害".只需将枚举的定义移到一个类定义后面,错误就会消失.将枚举移到接口后面是不够的,因为接口没有直接的等价物,只是被编译器删除了
我认为这与此处描述的问题相同 - 原因是在require()
声明后丢失了分号:
在另一个编译文件中是否有这样的行?
var UID = require('UID')
如果是这样,请尝试在结尾处添加分号:
var UID = require('UID');
这似乎是一个TypeScript错误; 这是错误报告(投票了!):http://typescript.codeplex.com/workitem/364
归档时间: |
|
查看次数: |
1904 次 |
最近记录: |