@docsvision/webclient
Version:
Type definitions for DocsVision WebClient scripts and extensions.
51 lines (50 loc) • 3.72 kB
TypeScript
import { FieldSpec } from '@docsvision/webclient/System/GetFieldName';
import { Factories, ServiceGetter, ServiceSetter } from './ServiceContainer';
/** Информация о сервисе, используемая в {@link ServiceContainer} */
export declare class Service<T = any> {
name: string;
factory?: (services: any) => T;
meta: object;
instance?: T;
get?: ServiceGetter<T>;
set?: ServiceSetter<T>;
/**
* Создает описание сервиса на основе существующего экземпляра.
* @param name Имя сервиса (имя переменной), по которому к нему будут обращаться.
* @param service Экземпляр сервиса
* @param T Тип сервиса
*/
static fromInstance<ContainerT, ValueT>(name: FieldSpec<ContainerT, ValueT>, service: ValueT, meta?: object): Service<ValueT>;
/**
* Создает описание сервиса, экземпляр которого создается при первом обращении
* @param name Имя сервиса (имя переменной), по которому к нему будут обращаться.
* @param service Метод, который принимает параметром текущий контейнер и возвращает экземпляр сервиса.
* @param T Тип сервиса
*/
static fromFactory<ContainerT, ValueT>(name: FieldSpec<ContainerT, ValueT>, serviceFactory: (services: any) => ValueT, meta?: object): Service<ValueT>;
/**
* Создает описание сервиса, доступ к экземпляру которого осуществляется через специальные методы.
* @param name Имя сервиса (имя переменной), по которому к нему будут обращаться.
* @param get Метод, возвращающий экземпляр сервиса
* @param set Метод, устаналивающий новый экземпляр сервиса
* @param T Тип сервиса
*/
static fromAccessors<ContainerT, ValueT>(name: FieldSpec<ContainerT, ValueT>, get: ServiceGetter<ValueT>, set?: ServiceSetter<ValueT>, meta?: object): Service<ValueT>;
/**
* Создает описание сервиса из объекта, в котором ключем выступает имя переменной сервиса, а значением - его экземпляр.
* @param name Имя сервиса (имя переменной), по которому к нему будут обращаться.
* @param service Экземпляр сервиса
* @param T Тип сервиса
*/
static fromMap<$T>(container: $T, meta?: object): Service;
/**
* Создает описание сервиса из объекта, в котором ключем выступает имя переменной сервиса, а значением - фабрика, создающая экземпляр сервиса.
* @param container Объект, в котором ключи - имена сервисов, значения - фабричные методы сервисов.
* @param service Экземпляр сервиса
* @param T Тип сервиса
*/
static fromFactoryMap<$T>(container: Factories<$T>, meta?: object): Service;
private static fromMapInternal;
}
export declare const ServiceDescriptor: typeof Service;
export declare type ServiceDescriptor<T = any> = Service<T>;