Weboldal keresés

javascript - Typescript dekorátor dinamikus módosítása


Van egy mezőm egy TypeScript osztályban, amelyen az A dekorátor van, de szeretném a dekorátort A-ról B-re változtatni, amikor egy bizonyos környezetben fut. Ezt meg lehet valósítani TypeScript-ben?

class SampleClass {
    @DecoratorA 
    sampleField;

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

Lehetséges az, hogy a konstruktorban valamilyen feltétel alapján a DecoratorA-t DecoratorB-re cseréljük?

Válasz #1

Tehát ahogy a kommentekben javasolták, hozz létre egy dekorátor-gyárat:

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

És alkalmazd (figyelj a zárójelekre):

class SampleClass {
    @AorB() 
    sampleField;
}

Kapcsolódó cikkek