theatre-events
Version:
A full implementation of a standard event dispatcher for javascript
32 lines (31 loc) • 1.1 kB
TypeScript
import EventListener from './event-listener';
/**
* This is a type used to defined an event name. Event name is a subject
* dispatched by the event dispatcher.
*/
declare type EventTarget = string | symbol;
/**
* A standard event dispatcher interface wich define the behavior of an event dispatcher
*/
interface EventDispatcher {
/**
* Dispatch an event. It can be synchronous or asynchronous depending
* on the implementation of the event dispatcher.
*/
dispatch<T>(eventName: EventTarget, payload?: T): T | Promise<T>;
/**
* Add a new event listener to the target eventName
*/
addEventListener(eventName: EventTarget, listener: EventListener): void;
/**
* Remove an event listener from a target eventName
*/
removeEventListener(eventName: EventTarget, listener: EventListener): void;
/**
* Clear all event listeners from a target or clear the entire listener
* stack if no event name is provided.
*/
clearEventListeners(eventName?: EventTarget): void;
}
export { EventTarget };
export default EventDispatcher;