EventEmitter class

Event emitter base class with generic type support.

Example

interface MyEvents {
  'user:created': User;
  'user:deleted': { id: string };
}

const emitter = new EventEmitter<MyEvents>();
emitter.on('user:created', (user) => console.log(user.name));
emitter.emit('user:created', newUser);

Constructors

constructor constructor

Signature

<Events extends Record<string, any>>(): EventEmitter<Events>

Type Parameters

Events

Object with event names as keys and payload types as values

Methods

emit method

Signature

<K extends string | number | symbol>(event: K, payload: Events[K]): void

Emit an event to all listeners.

Parameters

event

Event name

payload

Event payload

off method

Signature

<K extends string | number | symbol>(event: K, listener: (payload: Events[K]) => void): void

Unregister an event listener.

Parameters

event

Event name

listener

Callback to remove

on method

Signature

<K extends string | number | symbol>(event: K, listener: (payload: Events[K]) => void): () => void

Register an event listener.

Parameters

event

Event name

listener

Callback function

Returns

Unsubscribe function

once method

Signature

<K extends string | number | symbol>(event: K, listener: (payload: Events[K]) => void): () => void

Register a one-time event listener.

Parameters

event

Event name

listener

Callback function

Returns

Unsubscribe function