TypeScript 1.5 теперь decorators.
Может ли кто-нибудь представить простой пример, демонстрирующий надлежащий способ реализации декоратора, и описать, что означают аргументы в допустимых знаках декоратора?
declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;
declare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;
declare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;
declare type ParameterDecorator = (target: Function, propertyKey: string | symbol, parameterIndex: number) => void;
Кроме того, существуют ли какие-либо соображения лучшей практики, которые следует учитывать при реализации декоратора?