繁体   English   中英

动态扩展打字稿注释中的类

[英]Dynamic extends class in a typescript annotation

假设我有2个类,A和B。我想创建一个打字稿注释,该注释执行与动态扩展类相同的操作。 我不能使用扩展,因为类A仅在运行时才知道。因此,结果我希望类A扩展B {}但使用A动态。

我试图创建一个注释:

function extendsWithB(target) {
  //do something to extends the target with B class
  return target;
}

可以这样使用:

 @extendsWithB
   Class A {}

关于应在注释中添加什么的任何想法?

编辑:这个问题纯粹是理论上的。 我不想在生产或其他方面尝试使用。

我认为您可以通过执行以下操作来达到所需的效果:

export function Ext(bCtor: any) 
{
    return (aCtor: any) => 
    {
        Object.getOwnPropertyNames(bCtor.prototype).forEach(name => {
            aCtor.prototype[name] = bCtor.prototype[name];
        });
    }
}

并应用:

@Ext(B)
class A
{
    //...
}

当然没有更多的类型检查了,因为打字稿不知道这种黑客。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM