UNPKG

@mizdra/strictly-typed-event-target

Version:
21 lines 1.73 kB
export interface STCustomEventInit<T> extends CustomEventInit<T> { detail: T; } export interface STCustomEvent<EventMap extends {}, EventName extends keyof EventMap = keyof EventMap> extends CustomEvent<EventMap[EventName]> { new <T extends keyof EventMap>(typeArg: T, ...ConditionalOptionalArgs: EventMap[T] extends undefined ? [STCustomEventInit<EventMap[T]>?] : [STCustomEventInit<EventMap[T]>]): STCustomEvent<EventMap, T>; } export interface STEventListener<EventMap extends {}, EventName extends keyof EventMap = keyof EventMap> { (evt: STCustomEvent<EventMap, EventName>): void; } export interface STEventListenerObject<EventMap extends {}, EventName extends keyof EventMap = keyof EventMap> { handleEvent(evt: STCustomEvent<EventMap, EventName>): void; } export declare type STEventListenerOrEventListenerObject<EventMap extends {}, EventName extends keyof EventMap = keyof EventMap> = STEventListener<EventMap, EventName> | STEventListenerObject<EventMap, EventName>; export interface STEventTarget<EventMap extends {}> { new (): STEventTarget<EventMap>; addEventListener<T extends keyof EventMap>(type: T, listener: STEventListenerOrEventListenerObject<EventMap, T> | null, options?: boolean | AddEventListenerOptions): void; dispatchEvent<CustomEvent extends STCustomEvent<EventMap, keyof EventMap>>(event: CustomEvent): boolean; removeEventListener<T extends keyof EventMap>(type: T, callback: STEventListenerOrEventListenerObject<EventMap, T> | null, options?: EventListenerOptions | boolean): void; } export declare function createSTEventTarget<EventMap extends {}>(): readonly [STCustomEvent<EventMap, keyof EventMap>, STEventTarget<EventMap>]; //# sourceMappingURL=index.d.ts.map