为啥不能在 TypeScript 中导出类实例?
Posted
技术标签:
【中文标题】为啥不能在 TypeScript 中导出类实例?【英文标题】:Why is it not possible to export a class instance in TypeScript?为什么不能在 TypeScript 中导出类实例? 【发布时间】:2015-06-14 00:15:39 【问题描述】:我没有找到在 TypeScript 中轻松导出类实例的方法。我必须想出以下解决方法来生成正确的 javascript 代码。
var expo = new Logger("default");
export = expo;
生成
var expo = new Logger("default");
module.exports = expo;
有没有更简单的方法来实现这一点?
【问题讨论】:
存在一些东西,你应该阅读[为什么Typescript使用关键字“export”来公开类和接口?][1] [1]:***.com/questions/15760462/… 你想写什么代码?看来您已经实现了目标? 我想写export new Logger("default");
。嗯……还是不太清楚。无论如何,谢谢。
【参考方案1】:
我必须想出以下解决方法来生成正确的 javascript 代码
不是解决方法。这是 TS 中进行根级导出的标准方式。
有没有更简单的方法来实现这一点
是的。 export = new Variable
。示例:
export = new Foo();
未来
对于 ES 模块,您应该改用 default
导出:
export default expo = new Logger("default");
在大多数情况下,这与根级导出具有相同的效果。
【讨论】:
添加了Yes
/ No
答案。我没有在页面上的任何其他答案中看到它的答案。
感谢你在事后 3 年的改进(不是讽刺)!【参考方案2】:
打开https://k94n.com/es6-modules-single-instance-pattern 是另一种方法:
export let expo = new Logger("default");
它的优点是可以在 *.ts 文件中导出多个类实例。
【讨论】:
【参考方案3】:一种方法是在类中创建一个静态实例:
export class MyClass
static instanceOfMyClass = new MyClass();
..
var instanceOfMyClass = MyClass.instanceOfMyClass;
【讨论】:
【参考方案4】:很偶然,我找到了这种导出实例的方法:
class MyClass()
export default new MyClass();
【讨论】:
以上是关于为啥不能在 TypeScript 中导出类实例?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在另一个 Typescript 项目中导入时没有得到导出的对象?
是否可以在也具有 IPC 挂钩的 node.js 文件中导出类?