gpt4 book ai didi

javascript - TypeScript 使用 typescript-require 共享文件

转载 作者:行者123 更新时间:2023-11-30 17:45:35 25 4
gpt4 key购买 nike

我使用 TypeScript 通过面向对象编程对我的 javascript 文件进行编码。我想使用 Node 模块 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 来创建新实例。

shared/classes/Message.ts

class Message{
// Big stuff
}
try{
module.exports = Message;
}catch(e){}

在 fil 的末尾,我添加了这个 try/catch 以将类添加到 module.exports(如果它存在)。 (它有效,但这并不是一个真正的好方法,我想做得更好)如果我从浏览器加载文件,则 module.export 将不存在。

所以,我上面所做的是有效的。现在,如果我尝试使用 typescript-require 模块,我将更改一些内容:

shared/lib/message.js

var Message = requireTs('./../classes/Message.ts');

我使用 requireTs 而不是 require,它是一个全局变量。我准确地说我正在使用 .ts 文件。

shared/classes/Message.ts

export class Message{
// Big stuff
}
// remove the compatibility script at the end

现在,如果我这样尝试并查看控制台服务器,我会得到 requireTs is object 和 Message is undefined in shared/lib/message.js。如果我不在 Message.ts 中使用 export 关键字,我也会得到同样的结果。即使我在最后使用我的小脚本,我也总是会出错。

但还有更多,我还有另一个类名 ValidatorMessage.ts,它扩展 Message.ts,如果我使用导出关键字...

我做错了什么吗?我尝试了其他几种方法,但没有任何效果,看起来 typescript-require 无法要求 .ts 文件。感谢您的帮助。

最佳答案

查看 typescript-require 库,我发现它已经 9 个月没有更新了。由于它包括 TypeScript 的核心 lib.d.ts 类型(和 node.d.ts 类型),并且由于这些在过去 9 个月中取得了很大进展(以及由于语言更新而需要进行的更改),因此它可能不兼容使用最新的 TypeScript 版本(这只是我的假设,我可能是错的)。

使用 TypeScript 在 Node 和浏览器之间共享模块并不容易,因为它们都使用非常不同的模块系统(Node 中的 CommonJS,而浏览器中通常类似于 RequireJS)。 TypeScript 根据给定的 --module 开关发出一个或另一个的代码。 (注意:有些人使用通用模块定义 (UMD) 模式,但 TypeScript 不直接支持它)。

您到底想达到什么目标,我或许可以提供一些指导。

关于javascript - TypeScript 使用 typescript-require 共享文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20219450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com