@novely/solid-renderer
Version:
Renderer for @novely/core powered by SolidJS
13 lines (12 loc) • 633 B
TypeScript
type EventMap = Record<string, unknown>;
type EventKey<T extends EventMap> = string & keyof T;
type EventReceiver<T> = (params: T) => void;
interface Emitter<T extends EventMap> {
on<K extends EventKey<T>>(eventName: K, fn: EventReceiver<T[K]>): void;
once<K extends EventKey<T>>(eventName: K, fn: EventReceiver<T[K]>): void;
off<K extends EventKey<T>>(eventName: K, fn: EventReceiver<T[K]>): void;
emit<K extends EventKey<T>>(eventName: K, params: T[K]): void;
}
declare const createEmitter: <T extends EventMap>() => Emitter<T>;
export { createEmitter };
export type { Emitter, EventKey, EventReceiver, EventMap };