关于以下示例代码,是否有任何类型安全的方法可以自动将任何原型方法调用转发到另一个对象的相关方法?
class Foo {
greet() {
return "hello";
}
sayGoodbye() {
return "bye";
}
// ... many more methods
}
class Bar {
foo: Foo;
constructor() {
this.foo = new Foo();
}
greet() {
this.foo.greet();
}
sayGoodbye() {
this.foo.sayGoodbye();
}
// ...
}
我们不必为
method() { foo.method() }
上的所有方法都写Foo
? IE。就像在 JavaScript 中我们如何做 Object.getOwnPropertyNames(Foo.prototype).forEach(...)
并将方法指向 foo
,但是以类型安全的方式?
我尝试过混合,但我发现它们很难使用,因为它们颠倒了关系(
Foo
必须子类化Bar
,所以我不能在声明Foo
时使用特定参数实例化Bar
)。