Remove type assertion:

This commit is contained in:
2026-08-07 01:41:50 +00:00
parent 67fd28a01f
commit abd7cc619e
+13 -5
View File
@@ -2,13 +2,21 @@ export type EventMap = Record<string, unknown>;
type Listener<T> = (detail: T) => void;
/**
* Internally permits listeners for individual event payloads to be stored
* in a collection typed with the union of all event payloads.
*/
type StoredListener<T> = {
bivarianceHack(detail: Readonly<T>): void;
}['bivarianceHack'];
/**
* A listener entry.
* @template T - The event type.
* @template T - The event payload type.
*/
interface ListenerEntry<T> {
listener: Listener<T>;
wrappedListener: Listener<T>;
listener: StoredListener<T>;
wrappedListener: StoredListener<T>;
debounceTime?: number;
once?: boolean;
}
@@ -50,7 +58,7 @@ export class EventEmitter<T extends EventMap> {
};
// Add the listener entry to the listeners map.
this.listeners.get(type)?.add(listenerEntry as ListenerEntry<T[keyof T]>);
this.#listeners.get(type)?.add(listenerEntry);
// Return an "off" callback that can be called to stop listening for events.
return () => this.off(type, listener);
@@ -87,7 +95,7 @@ export class EventEmitter<T extends EventMap> {
};
// Add the listener entry to the listeners map.
this.listeners.get(type)?.add(listenerEntry as ListenerEntry<T[keyof T]>);
this.#listeners.get(type)?.add(listenerEntry);
// Return an "off" callback that can be called to stop listening for events.
return () => this.off(type, listener);