代码之家  ›  专栏  ›  技术社区  ›  Pavan Bahuguni

动态更改typescript装饰器

  •  1
  • Pavan Bahuguni  · 技术社区  · 6 年前

    我在typescript类中有一个字段,它有一个decorator a,但是当decorator在某个特定环境中运行时,我想将其从a更改为B。 这可以用打字机实现吗?

    class SampleClass {
        @DecoratorA 
        sampleField;
    
        constructor() {
          if(condition) {
            // change DecoratorA to DecoratorB
          }
        }
    }
    

    有没有可能根据某些条件将构造函数中的DecoratorA更改为DecoratorB?

    1 回复  |  直到 6 年前
        1
  •  5
  •   Aleksey L.    6 年前

    因此,在评论中建议创建一个 decorator factory

    function AorB() {
        return condition ? DecoratorA : DecoratorB;
    }
    

    并应用它(注意括号):

    class SampleClass {
        @AorB() 
        sampleField;
    }