/**
 * Decorator function types
 */ export type DecoratorType = ClassDecorator | PropertyDecorator | MethodDecorator | ParameterDecorator ; typeParam typeParam export class MetadataAccessor < T , D extends DecoratorType = DecoratorType > { private constructor ( public readonly key ) { } toString ( ) { return this . key ; } param key typeParam typeParam static create < V , DT extends DecoratorType > ( key ) { return new MetadataAccessor < V , DT > ( key ) ; } } typeParam typeParam export type MetadataKey < T , D extends DecoratorType > = MetadataAccessor < T , D > | string ; /**
 * An object mapping keys to corresponding metadata
 */ export interface MetadataMap < T > { [ propertyOrMethodName ] : T ; } example export interface DesignTimeMethodMetadata { /**
     * Type of the method itself. It is `Function` for methods, `undefined` for the constructor.
     */ type : Function | undefined ; /**
     * An array of parameter types.
     */ parameterTypes : Function [ ] ; /**
     * Return type, may be `undefined` (e.g. for constructors).
     */ returnType : Function | undefined ; }