简短回答:Typescript 不支持将类定义拆分为多个文件。
解决方法:您可以定义一个包含类成员的接口,以及两个实现该接口的不同类。然后将一个类的属性混合到另一个类中,以形成一个组合类。例如:
大型类
interface LargeClass {
methodA(): string;
methodB(): string;
}
class LargeA implements LargeClass {
methodA: () => string; // not implemented, needed since otherwise we don't extend LargeClass
methodB() {
return "Hello world";
}
}
LargeClass.b.ts
class LargeB implements LargeClass {
methodA() {
return "Foo";
}
methodB: () => string; // not implemented, needed since otherwise we don't extend LargeClass
}
Usage.ts
// Using underscore's extend to copy implementation from A to B
var c:LargeClass = _.extend(new LargeA(), new LargeB());
// Manually mixing in a to b
var a = new LargeA();
var b:LargeClass = new LargeB();
for (var prop in a) {
b[prop]=a[prop];
}
但是,如果您需要该类的构造函数,则这将不起作用。确实这不是最理想的......尽管如此,还是有解决方法:)
哦,顺便说一句,这是有效的,因为打字稿不会发出类的统一属性/字段类型声明——它只使用它们进行类型检查。
我还意识到,您可以在没有接口的情况下以更漂亮的方式仅使用类构造来完成此操作...我现在将如何做到这一点作为练习留给读者...