【发布时间】:2013-12-11 17:40:03
【问题描述】:
我使用 TypeScript 使用面向对象编程对我的 javascript 文件进行编码。 我想使用节点模块https://npmjs.org/package/typescript-require 从其他文件中获取我的 .ts 文件。
我想在服务器端和客户端共享我的文件。 (浏览器)这非常重要。注意文件夹/shared/并不是客户端和服务器之间共享的,而是游戏服务器和Web服务器之间共享的。我使用 pomelo.js 作为框架,这就是为什么。
目前我没有(成功地)使用 typescript-require 库。 我喜欢这样:
shared/lib/message.js
var Message = require('./../classes/Message');
module.exports = {
getNewInstance: function(message, data, status){
console.log(requireTs);// Global typescript-require instance
console.log(Message);
return new Message(message, data, status);
}
};
此文件需要 Message.js 来创建新实例。
共享/类/消息。ts
class Message{
// Big stuff
}
try{
module.exports = Message;
}catch(e){}
在文件的末尾,我添加了这个 try/catch 以将类添加到 module.exports(如果存在)。 (它有效,但这并不是一个真正的好方法,我想做得更好) 如果我从浏览器加载文件,module.export 将不存在。
所以,我上面所做的工作正常。现在,如果我尝试使用 typescript-require 模块,我将更改一些内容:
shared/lib/message.js
var Message = requireTs('./../classes/Message.ts');
我使用 requireTs 而不是 require,它是一个全局变量。我准确地说我正在使用 .ts 文件。
共享/类/消息。ts
export class Message{
// Big stuff
}
// remove the compatibility script at the end
现在,如果我尝试这样并查看控制台服务器,我会得到 requireTs 是对象,而 shared/lib/message.js 中未定义消息。 如果我不在 Message.ts 中使用 export 关键字,我会得到相同的结果。即使我最后使用我的小脚本,我总是会出错。
但还有更多,我还有另一个类名 ValidatorMessage.ts,它扩展 Message.ts,如果我使用导出关键字...
我做错了吗?我尝试了其他几件事,但没有任何效果,看起来 typescript-require 无法要求 .ts 文件。 感谢您的帮助。
【问题讨论】:
标签: javascript node.js typescript