假设我有2个班,A和B. 我想创建一个typescript注释,它可以动态地扩展类。 我不能使用extends,因为类A只在运行时已知。所以在结果中我希望类A扩展B {} 但是A动态。
我试图创建一个注释:
function extendsWithB(target) {
//do something to extends the target with B class
return target;
}
这可以这样使用:
@extendsWithB
Class A {}
关于我应该在注释中添加什么的任何想法?
编辑:这个问题纯粹是理论上的。我不想在制作或其他方面尝试这个。
答案 0 :(得分:2)
我认为你可以通过做这样的事情来达到预期的效果:
export function Ext(bCtor: any)
{
return (aCtor: any) =>
{
Object.getOwnPropertyNames(bCtor.prototype).forEach(name => {
aCtor.prototype[name] = bCtor.prototype[name];
});
}
}
并应用它:
@Ext(B)
class A
{
//...
}
当然没有更多的类型检查,因为打字稿不知道这个黑客。