function logPosition(target: any, propertyKey: string, parameterIndex: number) {console.log(parameterIndex);}​class Cow {say(b: string, @logPosition c: boolean) {console.log(b);}}​new Cow().say('hello', false); // outputs 1 (newline) hello
The above demonstrates decorating method parameters. Readers familiar with Angular can now imagine how Angular implemented their @Inject()
system.