Typescript mixins不适用于父级的泛型

时间:2019-02-13 16:45:51

标签: typescript

我正在尝试在typescript中实现mixins并从mixin类中获取自动完成功能。这是我的代码:

export type Constructor<T> = new (...args: any[]) => T;

export interface Test {
  methodA();
  methodB();
}


export type TestCtor = Constructor<Test>;


export function mixinTest<T extends Constructor<{}>>(base: T): TestCtor & T {
  return class extends base {

    constructor(...args: any[]) { super(...args); }

    methodA() { }

    methodB() {}

  };
}

class A<T> { 
  value: T;

  constructor(param: string) {}
}

class B extends mixinTest(A<{id: string}>) {
}

new B().methodA();
  

但是我得到了错误:没有基本的构造函数有数字   指定参数

或带有通用名称:

  

预期1个参数,但得到3个

我想念什么?

1 个答案:

答案 0 :(得分:1)

解决方案

....
class _Base extends A<{ id: string }> { }

class B extends mixinTest(_Base) {
}

new B('Hey!').methodA();