De ce spunem decoratori în TypeScript? De ce nu Anotație (ca în Java) sau Atribute (ca în C#)?
Aș dori să știu motivul pentru care această caracteristică din TypeScript este numită Decorator?
Este doar un nume diferit de Annotation sau Attribute? Există vreo altă cauză?
Care este diferența dintre un Decorator și un Annotation/Attribute?
Răspuns #1
Este pentru că ei fac lucruri diferite.
O adnotare adaugă metadate unui fragment de cod care pot fi ulterior citite și folosite de alt cod. În timp ce o decorare decorează un cod cu alt cod.
Luați cazul tăierii de lemn.
O adnotare de jurnalizare poate fi preluată la timpul de execuție de către jurnalist (poate prin reflecție) și jurnalizarea va fi generată conform acesteia.
O decorațiune de logare va înconjura codul logat cu o funcție care înregistrează informații.
Răspunsul #2
Anotările în Java sunt metadate atașate la clase, metode etc.
Totuși, decoratorii în TypeScript sunt funcții care pot adăuga meta-date, dar pot adăuga și un anumit comportament precum jurnalizarea.
Mai multe informații: https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Decorators.md