core-cde
Version:
47 lines (46 loc) • 2.04 kB
TypeScript
export declare type EventHandler<E> = (event: E) => void;
/**
* Событие, на которое можно подписаться.
*/
export interface Event<E> {
/**
* Ригистрирует новый обработчик у диспетчера. Каждый раз,
* когда событие отправляется, обработчик получает уведомление.
* @param handler Обработчик для регистрации.
*/
register(caller: any, handler: EventHandler<E>): void;
/**
* Отписать обработчик от диспетчера.
* @param handler Обработчик для удаления.
*/
unregister(caller: any, handler: EventHandler<E>): void;
}
/**
* Диспетчер, который может передавать события подписчикам.
*/
export declare class EventDispatcher<E> implements Event<E> {
/**
* Обработчики, которые хотят получать уведомления о возникновении события.
*/
private _handlers;
/**
* Конструктор
*/
constructor();
/**
* Ригистрирует новый обработчик у диспетчера. Каждый раз,
* когда событие отправляется, обработчик получает уведомление.
* @param handler Обработчик для регистрации.
*/
register(caller: any, handler: EventHandler<E>): void;
/**
* Отписать обработчик от диспетчера.
* @param handler Обработчик для удаления.
*/
unregister(caller: any, handler: EventHandler<E>): void;
/**
* Рассылает событие всем подписчикам.
* @param event Данные о произошедшем событии.
*/
dispatch(event: E): void;
}