在TypeScript中,有没有一种方法可以创建泛型mixin函数,该函数还允许在返回的类上使用泛型类型参数?

时间:2019-12-09 21:55:20

标签: typescript typescript-generics

我希望能够使此mixin正常工作,但是我不确定TS甚至是否支持我的工作。

有什么方法可以将<T>的{​​{1}}传递给GenericChild的返回类?还是有一种方法可以重组/重构以获得相似的结果?

当前,此代码存在编译器错误:Mixin1。 (它还说"A mixin class must have a constructor with a single rest parameter of type 'any[]'."在类型上不存在,但是我认为如果我遇到第一个错误,它将得到解决)

代码:

prop2

Playground Link

我希望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); 的实例能够访问Child1prop1prop2childProp。我意识到我可以让anonResult组成这些类,但是我想看看使用mixin是否可以实现,因此这些属性将直接在Child1实例之外可用。

我也通读了this TS issue,但我认为它并没有真正涵盖我正在尝试做的事情。

0 个答案:

没有答案