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;
}
