Я пытаюсь использовать классы Typescript следующим образом:
type Constructor<T> = new(...args: any[]) => T;
interface Activatable {
activated: boolean;
}
function Activatable<T extends Constructor<{}>>(Base: T = (class {} as any)) {
return class extends Base implements Activatable {
activated = false;
activate() {
this.activated = true;
}
deactivate() {
this.activated = false;
}
};
}
interface Taggable {
tagged: boolean;
}
function Taggable<T extends Constructor<{}>>(Base: T = (class {} as any)) {
return class extends Base implements Taggable {
tagged = false;
};
}
export class Test extends Taggable(Activatable()) implements OnInit {
test() {
// Access mixed properties & method
console.log(this.activated, this.tagged);
}
}
Все работало нормально с версией Typescript 3.5.3, но после обновления до 3.8.3 я получаю эту ошибку: ![error](https://i.stack.imgur.com/nXQd9.png)
Я знаю, проблема в том, что я не предоставил возвращаемый тип функций mixin. Но как мне сделать так, чтобы все свойства и методы из базовых миксинов были доступны?