我正在编写一个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
答案 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