I am trying to use ES6 Mixin in TypeScript. What I have is below and it works fine with BaseClass.
class BaseClass {
public foo() {}
};
interface IMyMixin {
foo2();
}
let MyMixin = (superclass: typeof BaseClass) => class extends BaseClass implements IMyMixin {
public foo2() {}
}
class MyBaseClass extends MyMixin(BaseClass) {
}
However, I cannot apply MyMixinto a derived class from BaseClass; Meanwhile, I cannot create a common mixing set.
Is there a way to make it work for both BaseClass, and DerivedClass?
class DerivedClass extends BaseClass {
public bar() {}
}
class MyDerivedClass extends MyMixin(DerivedClass) {
public something() {
this.bar();
}
}
let MyMixin = <T extends BaseClass>(superclass: typeof T) => class extends T implements IMyMixin {
public foo2() {}
}
source
share