在下面的示例中,我尝试定义函数 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);
答案 0 :(得分:2)
在介绍它们的[PR]中定义的杂项非常有关构造函数的约束。它应该是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();