如何在Typescript中导出类实例

时间:2019-01-24 16:42:25

标签: angular typescript umd

我正在编写一个TS库,并想导出一个类的实例,我打算在消费应用程序中将其用作单例。

现在我具有以下结构:

index.ts

{
  "name": "sample-http",
  "version": "0.0.1",
  "dependencies": {
    "firebase-admin": "^6.5.1"
  }
}

foo.ts

export { Foo } from './my-class';

然后我使用webpack和babel将其构建为UMD格式,并且在另一个应用程序(Angular)中,我能够导入我的类,实例化它并相应地使用它。

export class Foo {
  functionA() {}
}

有没有办法返回我的类的实例化实例,还是我在想这是错误的方式?

因此,不必执行import { Foo } from 'foo'; private foo = new Foo(); const x = foo.functionA(); ,导入的Foo实际上已经是一个实例了吗?

谢谢

更新 我应该提到,我正在导出接口之类的其他内容,因此我认为默认类导出不是正确的正确方法吗? -参见here

4 个答案:

答案 0 :(得分:3)

是的,这完全有可能,这也是在TS中执行此操作的标准方法。

export default new Foo();

但是,如果您不仅要导入此实例,还要导入接口,则可以这样导出单例:

export const foo = new Foo();

您可以找到export文档here

答案 1 :(得分:3)

您可以像这样控制返回的内容:

// Export the named class directly
export class Foo { }

// Export the named class indirectly
class Bar { }
export { Bar }

// Export an instance of the class directly
export const foo = new Foo();

// Export an instance of the class indirectly
const bar = new Bar();
export { bar };

这是TypeScript Playground link,其中显示了代码编译和生成的javascript。

有关导出(以及导入和再导出)的《 TypeScript手册》官方文档:https://www.typescriptlang.org/docs/handbook/modules.html#export

MDN文档(由jo_va提供):https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export

这是针对他们的Basarat指南:https://basarat.gitbooks.io/typescript/docs/project/modules.html

答案 2 :(得分:1)

如果只希望单例,则应遵循单例惯例,

  export class Foo {
    private static _instance = new Foo();
    private constructor() {

    }

    static get instance() {
      return this._instance;
    }

  }

  export const foo = Foo.instance;

答案 3 :(得分:0)

可以导出类Member的实例。

像这样导出类实例:RouteData.Values

像这样导出课程:export const playerRoutes = new Routes