【问题标题】: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]:stackoverflow.com/questions/15760462/…
  • 你想写什么代码?看来您已经实现了目标?
  • 我想写export new Logger("default");。嗯……还是不太清楚。无论如何,谢谢。

标签: javascript typescript


【解决方案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();
      

      【讨论】:

        猜你喜欢
        • 2019-06-18
        • 1970-01-01
        • 2012-01-20
        • 1970-01-01
        • 2012-10-08
        • 1970-01-01
        • 2020-09-07
        • 1970-01-01
        • 2017-10-20
        相关资源
        最近更新 更多