UNPKG

pg-listen

Version:

PostgreSQL LISTEN & NOTIFY that finally works.

36 lines (35 loc) 1.4 kB
declare type Arguments<T> = [T] extends [(...args: infer U) => any] ? U : [T] extends [void] ? [] : [T]; /** * Type-safe event emitter. * * Use it like this: * * interface MyEvents { * error: (error: Error) => void * message: (from: string, content: string) => void * } * * const myEmitter = new EventEmitter() as TypedEmitter<MyEvents> * * myEmitter.on("message", (from, content) => { * // ... * }) * * myEmitter.emit("error", "x") // <- Will catch this type error */ export interface TypedEventEmitter<Events> { addListener<E extends keyof Events>(event: E, listener: Events[E]): this; on<E extends keyof Events>(event: E, listener: Events[E]): this; once<E extends keyof Events>(event: E, listener: Events[E]): this; prependListener<E extends keyof Events>(event: E, listener: Events[E]): this; prependOnceListener<E extends keyof Events>(event: E, listener: Events[E]): this; removeAllListeners<E extends keyof Events>(event: E): this; removeListener<E extends keyof Events>(event: E, listener: Events[E]): this; emit<E extends keyof Events>(event: E, ...args: Arguments<Events[E]>): boolean; eventNames(): (keyof Events)[]; listeners<E extends keyof Events>(event: E): Function[]; listenerCount<E extends keyof Events>(event: E): number; getMaxListeners(): number; setMaxListeners(maxListeners: number): this; } export {};