我希望能够使此mixin正常工作,但是我不确定TS甚至是否支持我的工作。
有什么方法可以将<T>
的{{1}}传递给GenericChild
的返回类?还是有一种方法可以重组/重构以获得相似的结果?
当前,此代码存在编译器错误:Mixin1
。 (它还说"A mixin class must have a constructor with a single rest parameter of type 'any[]'."
在类型上不存在,但是我认为如果我遇到第一个错误,它将得到解决)
代码:
prop2
我希望class BaseClass1 {
prop1 = 'baseClass1';
}
class BaseClass2 extends BaseClass1 {
prop2 = 'baseClass2';
}
class GenericChild<T> extends Mixin1(BaseClass2)<T> {
childProp: T | undefined = undefined;
}
type Constructor<T> = new(...args: any[]) => T;
function Mixin1<T extends Constructor<BaseClass1>>(Base: T) {
return class <TResult> extends Base {
anonResult: TResult | undefined = undefined;
constructor(...args: any[]) {
super(...args);
}
};
}
class Child1 extends GenericChild<string> {
constructor() {
super();
console.log(this);
}
}
console.log(new Child1().prop2);
的实例能够访问Child1
,prop1
,prop2
和childProp
。我意识到我可以让anonResult
组成这些类,但是我想看看使用mixin是否可以实现,因此这些属性将直接在Child1
实例之外可用。
我也通读了this TS issue,但我认为它并没有真正涵盖我正在尝试做的事情。