
Method decorators
Method decorators are declared before the method declaration. This decorator is used to modify, observe, or replace a method definition and is applied to the property descriptor for the method. The following code snippet shows a simple class with an applied method decorator:
class Hello { @logging increment(n: number) { return n++; } }
The Hello class has the increment method that increments a number supplied to its parameter. Note that the increment method is decorated with the @logging decorator to log input and output of the increment method. The following is the code snippet of the logging function:
function logging(target: Object, key: string, value: any) { value.value = function (...args: any[]) { var result = value.apply(this, args); console.log(JSON.stringify(args)); return result; } }; }
The method decorator function takes three arguments: target, key, and value. target holds the method that is being decorated; key holds the name of the method being decorated; and value is the property descriptor of the specified property if it exists on the object.
The logging method gets invoked when the increment method is called and it logs the value to the console.