tsioc
Version:
tsioc is AOP, Ioc container, via typescript decorator
31 lines (30 loc) • 1.07 kB
TypeScript
import 'reflect-metadata';
import { ClassMetadata } from '../metadatas/index';
import { Type } from '../../types';
import { MetadataAdapter, MetadataExtends } from './DecoratorFactory';
import { Registration } from '../../Registration';
/**
* class decorator.
*
* @export
* @interface IClassDecorator
*/
export interface IClassDecorator<T extends ClassMetadata> {
(provide: Registration<any> | symbol | string, alias?: string, singlton?: boolean, cache?: number): ClassDecorator;
(metadata?: T): ClassDecorator;
/**
* not allow abstract to decorator with out metadata.
*/
(target: Type<any>): void;
}
/**
* create class decorator
*
* @export
* @template T metadata type.
* @param {string} name decorator name.
* @param {MetadataAdapter} [adapter] metadata adapter
* @param {MetadataExtends<T>} [metadataExtends] add extents for metadata.
* @returns {*}
*/
export declare function createClassDecorator<T extends ClassMetadata>(name: string, adapter?: MetadataAdapter, metadataExtends?: MetadataExtends<T>): IClassDecorator<T>;