Typescript 任意 class mixins 函数

Typescript arbitrary class mixins function

在下面的示例中,我尝试定义函数 classMixin,它将采用任意 class 和return 一个新的 class 扩展了这个任意 class。但是我收到一条错误消息,指出“type 'T' 不是构造函数类型。

如何在 Typescript 中定义函数以在 运行 时间 class mixins 中创建?

class A
{
    name: string;
}

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

let c = classMixin(A);

引入它们的 [PR] 中定义的 Mixins 对构造函数的约束非常讲究。应该是T extends new(...a: any[])=>any。行为将是构造函数参数将由 mixin 保留,这可能是您想要的:

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();