typescript core decorators
typescript wrappers decorators and services
Motivation: decorators is cool ❤️ 🔥
table of decorators:
decorator | arguments | description | target | service |
---|---|---|---|---|
log | toConosle - default is false | logging all method calls and set to logService | class | logService |
timerify | - | record function time execution. Also have statistic as total time and long execing function | method | performanceService |
select | map - Map<K,V> ot WeakMap key - K | Select value by key from map like collection | property | - |
pure | - | checking function or argument for not undefined and throw error if is not pure | method, argument | - |
autowired | args: any[] | creating new instance of type annotation | property | - |
save | handler: () => never | make function save - if handler is not set - don't stop executing program |
method | - |
trigger | ProxyObject | make class as Proxy. Make intercept functions, contructor calling and may redirect to new target | class | - |
want get more usage? see examples below
usage: @autowired()
decorator:
; ;console.dirtemp.autoWired; // Autowired {someReadOnlyProp: 4}console.dirtemp.autoWired2; // Autowired2 {prop: "123"}
usage: @log()
decorator
;; ;a.someFn21; logService.writeToFile'./logger.json'; // writing result to file
another example:
;; ;a.someFn21; logService.writeToFile'./logger.json'; // writing result to file
usage: @timerify()
decorator
;;; // one time only. for example on prepare hooknew Temp.lognTask; // usageperformance.profiler.writeToFile'./profiler.json'; // write performance information to fileperformance.disconect; // clear GC from performance information. for example on destroy
usage: @select()
decorator
; ; map.set'test', 123;map.set'test2', 4564;
usage: @pure()
decorator
; ; temp.someFn2, 3;temp.anotherFn1; // runtime error here. someArg is defined, but anotherNumber is not
;; console.log'start executing';saveDecoratorExample.unsaveFunctionnull;console.log'continue executing';// start executing// cannot read property 'length' of null// continue executing
;;temp.longTask;
More examples? Visit examples folder for more.