eligius
    Preparing search index...

    Interface ITypedEventEmitter<T>

    Interface for a type-safe event emitter

    interface ITypedEventEmitter<T extends Record<keyof T, unknown[]>> {
        emit<K extends string | number | symbol>(event: K, ...args: T[K]): void;
        off<K extends string | number | symbol>(
            event: K,
            handler: EventHandler<T[K]>,
        ): void;
        on<K extends string | number | symbol>(
            event: K,
            handler: EventHandler<T[K]>,
        ): () => void;
        once<K extends string | number | symbol>(
            event: K,
            handler: EventHandler<T[K]>,
        ): () => void;
        removeAllListeners(event?: keyof T): void;
    }

    Type Parameters

    • T extends Record<keyof T, unknown[]>

      Event map object where keys are event names and values are argument tuples

      Note: Use type aliases (not interface) for your event maps to avoid "Index signature is missing" errors. TypeScript treats them differently.

    Implemented by

    Index

    Methods

    • Emit an event to all subscribers

      Type Parameters

      • K extends string | number | symbol

      Parameters

      • event: K

        Event name

      • ...args: T[K]

        Event arguments

      Returns void

    • Unsubscribe from an event

      Type Parameters

      • K extends string | number | symbol

      Parameters

      Returns void

    • Subscribe to an event

      Type Parameters

      • K extends string | number | symbol

      Parameters

      Returns () => void

      Unsubscribe function

    • Subscribe to an event for one-time execution

      Type Parameters

      • K extends string | number | symbol

      Parameters

      Returns () => void

      Unsubscribe function

    • Remove all listeners for a specific event or all events

      Parameters

      • Optionalevent: keyof T

        Optional event name. If not provided, removes all listeners.

      Returns void