/ / Použitie ES dekoratérov na triedu získať a nastaviť metódy - javascript, decorator, ecmascript-next

Použitie ES dekoratérov na triede získať a nastaviť metódy - javascript, decorator, ecmascript-next

je to podľa decorátora v poriadku návrh mať dekoratéra na triede getter alebo setter? Alebo sú povolené len pri bežných metódach? napr.

class Foo extends Bar {

@override
get someProp() {
super.someProp + 2;
}
}

niektoré knižnice / rámce poskytujú takýchto dekoratérov. Ale napríklad babylónsky analyzátor babelu to označuje ako chybu!

odpovede:

2 pre odpoveď č. 1

Myslím, že z pohľadu je to úplne dobrédekorátora, ktorý sa má aplikovať na nastavovacie / getrové pole, v podstate ľubovoľné pole. Keďže vlastnosť "normálna" vlastnosť a setter / getter sa líšia v type popisu vlastníctva - deskriptor údajov oproti deskriptoru príslušenstva a dekorátor sa aplikuje na popisovač vlastnosti, ktorý môže byť použitý na akúkoľvek vlastnosť vrátane vlastností "setter / getter" a "method".

Napríklad môžete zmeniť nastavovač na "normálnu" vlastnosť vnútri dekorátora:

function removesetter(klass, prop, descriptor) {
return {
value: 5,
writable: true
}
}

class Foo {
@removesetter
get someProp() {
return 3;
}
}

const f = new Foo();
console.log(f.someProp); // 5