Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // function decorator example
- function keepTrack() {
- // stores(or tracks) input and output
- const track: [any, any][] = [];
- return {
- tracker: <MethodDecorator>(
- function(target, prop, descriptor: PropertyDescriptor) {
- const method = descriptor.value;
- descriptor.value = function(...args: any[]) {
- const result = method.apply(this, args);
- track.push([args, result]);
- return result;
- };
- }
- ),
- logger: <() => void>function() {
- return track;
- }
- };
- }
- const { tracker, logger } = keepTrack();
- class Cool {
- @tracker
- static add(a: number, b: number) {
- return a + b;
- }
- @tracker
- static makeString(a: string, b: string, c: string) {
- return `~~~${a + b + c}~~~`;
- }
- }
- // calls
- console.log(Cool.add(5, 8));
- console.log(Cool.makeString("lollipop/", "stuffs/", "everywhere"));
- console.log("---------------logger-----------------\n", logger());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement