javascript - Endre typescript-dekoratør dynamisk


Jeg har et felt i en TypeScript-klasse som har en dekoratør A, men jeg vil endre dekoratøren fra A til B når det kjører i et spesifikt miljø. Kan dette oppnås i TypeScript?

class SampleClass {
    @DecoratorA 
    sampleField;

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

Er det mulig å endre DecoratorA til DecoratorB i konstruktøren basert på en eller annen betingelse?

Svar #1

Så som foreslått i kommentarer, lag en dekoratørfabrikk:

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

Og bruk det (vær oppmerksom på parentesene):

class SampleClass {
    @AorB() 
    sampleField;
}

Relaterte artikler