如何在 Typescript 中导出 class 实例
How to export a class instance in Typescript
我正在创作一个 TS 库,并希望导出 class 的一个实例,我打算将其用作消费应用程序中的单例。
现在我有以下结构:
index.ts
export { Foo } from './my-class';
foo.ts
export class Foo {
functionA() {}
}
然后我使用 webpack 和 babel 构建成 UMD 格式,在另一个应用程序 (Angular) 中,我能够导入我的 class,实例化它并相应地使用它。
import { Foo } from 'foo';
private foo = new Foo();
const x = foo.functionA();
有没有办法 return 我的 class 的实例化实例,或者我是不是想错了?
所以导入的 Foo 实际上已经是一个实例,而不是必须做 new Foo()
?
谢谢
更新
我应该提到,我正在导出其他东西,例如接口,所以我认为默认的 class 导出不是正确的方法吗? - 参见 here
是的,这完全有可能,这也是在 TS 中执行此操作的标准方法。
export default new Foo();
但是,如果您不仅要导入此实例,还要导入接口,则可以像这样导出单例:
export const foo = new Foo();
您可以找到 export
文档 here
您可以像这样控制返回的内容:
// 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
如果你只想要单例,你应该坚持单例约定,
export class Foo {
private static _instance = new Foo();
private constructor() {
}
static get instance() {
return this._instance;
}
}
export const foo = Foo.instance;
可以导出 class 成员的实例。
像这样导出 class 实例:export const playerRoutes = new Routes
像这样导出 class:export class player
我正在创作一个 TS 库,并希望导出 class 的一个实例,我打算将其用作消费应用程序中的单例。
现在我有以下结构:
index.ts
export { Foo } from './my-class';
foo.ts
export class Foo {
functionA() {}
}
然后我使用 webpack 和 babel 构建成 UMD 格式,在另一个应用程序 (Angular) 中,我能够导入我的 class,实例化它并相应地使用它。
import { Foo } from 'foo';
private foo = new Foo();
const x = foo.functionA();
有没有办法 return 我的 class 的实例化实例,或者我是不是想错了?
所以导入的 Foo 实际上已经是一个实例,而不是必须做 new Foo()
?
谢谢
更新 我应该提到,我正在导出其他东西,例如接口,所以我认为默认的 class 导出不是正确的方法吗? - 参见 here
是的,这完全有可能,这也是在 TS 中执行此操作的标准方法。
export default new Foo();
但是,如果您不仅要导入此实例,还要导入接口,则可以像这样导出单例:
export const foo = new Foo();
您可以找到 export
文档 here
您可以像这样控制返回的内容:
// 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
如果你只想要单例,你应该坚持单例约定,
export class Foo {
private static _instance = new Foo();
private constructor() {
}
static get instance() {
return this._instance;
}
}
export const foo = Foo.instance;
可以导出 class 成员的实例。
像这样导出 class 实例:export const playerRoutes = new Routes
像这样导出 class:export class player