Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. // function decorator example
  2.  
  3. function keepTrack() {
  4. // stores(or tracks) input and output
  5. const track: [any, any][] = [];
  6.  
  7. return {
  8. tracker: <MethodDecorator>(
  9. function(target, prop, descriptor: PropertyDescriptor) {
  10. const method = descriptor.value;
  11.  
  12. descriptor.value = function(...args: any[]) {
  13. const result = method.apply(this, args);
  14. track.push([args, result]);
  15. return result;
  16. };
  17. }
  18. ),
  19. logger: <() => void>function() {
  20. return track;
  21. }
  22. };
  23. }
  24.  
  25. const { tracker, logger } = keepTrack();
  26.  
  27. class Cool {
  28. @tracker
  29. static add(a: number, b: number) {
  30. return a + b;
  31. }
  32.  
  33. @tracker
  34. static makeString(a: string, b: string, c: string) {
  35. return `~~~${a + b + c}~~~`;
  36. }
  37. }
  38.  
  39. // calls
  40. console.log(Cool.add(5, 8));
  41. console.log(Cool.makeString("lollipop/", "stuffs/", "everywhere"));
  42. console.log("---------------logger-----------------\n", logger());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement