【发布时间】:2016-05-13 15:49:38
【问题描述】:
在下面的模块 foo 中,bar.factoryMethod('Blue') 返回一个 WidgetBlue 的实例。
module foo {
export class bar {
factoryMethod(classname: string): WidgetBase {
return new foo["Widget" + classname]();
}
}
export class WidgetBase {
A: number;
B: string;
}
export class WidgetBlue extends WidgetBase { }
export class WidgetRed extends WidgetBase { }
}
这种安排的重点是插件小部件。
不幸的是,当我在另一个文件中声明一个插件WidgetGreen 时,事情很快就变糟了。
module foo {
export class WidgetGreen extends WidgetBase { }
}
由于某种原因,WidgetGreen 在运行时超出了factoryMethod 的范围。将它移到同一个文件可以解决问题,但这对插件类没有好处 - 它们必须添加到同一个文件中。
This question 建议我的代码应该可以工作,但事实并非如此。为什么?我该怎么办?
【问题讨论】:
标签: typescript