Функция Mixins Typescript произвольного класса - PullRequest
0 голосов
/ 30 января 2019

В приведенном ниже примере я пытаюсь определить функцию classMixin , которая будет принимать произвольный класс и возвращать новый класс, который расширяет этот произвольный класс.Но я получаю сообщение о том, что « тип 'T' не является типом функции конструктора. "

Как определить функцию в Typescript для создания во время выполнения классов mixins?

class A
{
    name: string;
}

function classMixin<T extends new()=>any>(baseclass: T)
{
    return class extends baseclass
    {
        age: number;
    }
}

let c = classMixin(A);

1 Ответ

0 голосов
/ 30 января 2019

Миксины, как определено в [PR], который вводит их, очень точны в отношении ограничения на конструктор.Это должно быть T extends new(...a: any[])=>any.Поведение будет состоять в том, что параметры конструктора будут сохранены миксином, что, вероятно, то, что вы хотите:

class A
{
    name: string;
}

function classMixin<T extends new(...a: any[])=>any>(baseclass: T)
{
    return class extends baseclass
    {
        age: number;
    }
}

let c = classMixin(A);
let cc = new c();
...