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();
在下面的示例中,我尝试定义函数 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();