typed-event-target
Version:
EventTarget in the browser but with strong event typing.
23 lines (22 loc) • 713 B
TypeScript
import { type Overwrite } from '@augment-vir/common';
/**
* Sub-class of `Event` with the type string part of the type signature.
*
* @category Internal
*/
export interface TypedEvent<EventType extends string> extends Event {
readonly type: EventType;
}
/**
* Define an `Event` sub-class with a type tied to its event type string.
*
* @category Events
* @example
*
* ```ts
* import {defineTypedEvent} from 'typed-event-target';
*
* defineTypedEvent('event-type-string');
* ```
*/
export declare function defineTypedEvent<const EventType extends string>(type: EventType): (new (eventInitDict?: EventInit) => TypedEvent<EventType>) & Overwrite<typeof Event, Pick<TypedEvent<EventType>, "type">>;