toosoon-events
Version:
Project providing services implemented as singleton class instances
89 lines (88 loc) • 2.68 kB
TypeScript
/**
* Utility abstract class for creating multiple event listeners
*
* @exports
* @class EventManager
* @abstract
* @template {Function} EventListener
*/
export declare abstract class EventManager<EventListener extends (...args: any[]) => void> {
/**
* Array of listeners bound to this manager event
*/
protected listeners: EventListener[];
/**
* Add a listener to this manager listeners
*
* @param {EventListener} listener The listener to add
* @returns {Function} The `off` function to remove the listener
*/
on(listener: EventListener): () => void;
/**
* Remove a listener from this manager listeners
*
* @param {EventListener} listener The listener to remove
*/
off(listener: EventListener): void;
/**
* Trigger this manager listeners
*
* @param {any[]} args The arguments to pass to the listeners
*/
emit(...args: Parameters<EventListener>): void;
/**
* Bind event listeners
*/
protected bind?(): void;
/**
* Unbind event listeners
*/
protected unbind?(): void;
}
/**
* Utility abstract class for creating multiple events listeners
*
* @exports
* @class EventsManager
* @abstract
* @template {string} EventKey
* @template {Function} EventListener
*/
export declare abstract class EventsManager<EventKey extends string, EventListener extends (...args: any[]) => void> {
/**
* Arrays of listeners bound to this manager events
*/
protected listeners: {
[key in EventKey]?: EventListener[];
};
/**
* Add a listener to this manager listeners
*
* @param {EventKey} eventKey The event key to add the listener to
* @param {EventListener} listener The listener to add
* @returns {Function} The `off` function to remove the listener
*/
on(eventKey: EventKey, listener: EventListener): () => void;
/**
* Remove a listener gtom this manager listeners
*
* @param {EventKey} eventKey The event key to remove the listener from
* @param {EventListener} listener The listener to remove
*/
off(eventKey: EventKey, listener: EventListener): void;
/**
* Trigger this manager listeners
*
* @param {EventKey} eventKey The event key to remove the listener from
* @param {any[]} args The arguments to pass to the listeners
*/
emit(eventKey: EventKey, ...args: Parameters<EventListener>): void;
/**
* Bind events listeners
*/
protected bind?(eventKey: EventKey): void;
/**
* Unbind events listeners
*/
protected unbind?(eventKey: EventKey): void;
}