Typescript, объединяющий несколько классов - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь использовать классы 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

Я знаю, проблема в том, что я не предоставил возвращаемый тип функций mixin. Но как мне сделать так, чтобы все свойства и методы из базовых миксинов были доступны?

...