【发布时间】:2017-03-06 19:36:04
【问题描述】:
根据输入数据编写了一个库;创建类并在主类中使用它们。
为了使代码更易于维护和阅读,我已将类生成逻辑移至导出工厂函数的单独文件中。
代码是用 ES2015 编写的。现在我正在迁移到 TypeScript。
这是一个伪例子:
factory.ts
export default function (foo:string) => {
class A {
value:string = foo + '-A';
}
return { A };
};
Main.ts
import factory from './factory';
export default class Main {
private inner:any;
constructor(foo:string) {
this.inner = factory(foo);
}
get a() {
return new this.inner.A();
}
}
用法:
let main = new Main('bar');
console.log(main.a.value); // "bar-A"
问题:
- TS 编译器错误:
Default export of the module has or is using private name 'A'. - 无法在
Main类中将gettera的类型定义为A(例如get a():A { ... }
您将如何解决这个问题(将工厂类保存在单独的文件中)?还是我应该改变设计模式?
【问题讨论】:
标签: typescript design-patterns factory