动态更改typescript装饰器

时间:2018-05-28 06:33:24

标签: javascript typescript

我在一个打字稿类中有一个字段,它有一个装饰器A,但我想在某个特定环境中运行时将装饰器从A更改为B. 这可以用打字稿来实现吗?

class SampleClass {
    @DecoratorA 
    sampleField;

    constructor() {
      if(condition) {
        // change DecoratorA to DecoratorB
      }
    }
}

是否可以根据某些条件将DecoratorA更改为构造函数中的DecoratorB?

1 个答案:

答案 0 :(得分:4)

正如评论中建议的那样,创建一个decorator factory

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

并应用它(注意括号):

class SampleClass {
    @AorB() 
    sampleField;
}