typed-event-target
Version:
EventTarget in the browser but with strong event typing.
15 lines (14 loc) • 477 B
TypeScript
/**
* Extract all event type string types from a union of events.
*
* @category Internal
*/
export type ExtractEventTypes<EventsUnion extends Readonly<Event>> = EventsUnion['type'];
/**
* Extract an event type from a union based on the event type string.
*
* @category Internal
*/
export type ExtractEventByType<EventsUnion extends Readonly<Event>, EventType extends ExtractEventTypes<EventsUnion>> = EventsUnion extends {
type: EventType;
} ? EventsUnion : never;