Remove type assertion:
This commit is contained in:
+13
-5
@@ -2,13 +2,21 @@ export type EventMap = Record<string, unknown>;
|
|||||||
|
|
||||||
type Listener<T> = (detail: T) => void;
|
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.
|
* A listener entry.
|
||||||
* @template T - The event type.
|
* @template T - The event payload type.
|
||||||
*/
|
*/
|
||||||
interface ListenerEntry<T> {
|
interface ListenerEntry<T> {
|
||||||
listener: Listener<T>;
|
listener: StoredListener<T>;
|
||||||
wrappedListener: Listener<T>;
|
wrappedListener: StoredListener<T>;
|
||||||
debounceTime?: number;
|
debounceTime?: number;
|
||||||
once?: boolean;
|
once?: boolean;
|
||||||
}
|
}
|
||||||
@@ -50,7 +58,7 @@ export class EventEmitter<T extends EventMap> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Add the listener entry to the listeners map.
|
// 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 an "off" callback that can be called to stop listening for events.
|
||||||
return () => this.off(type, listener);
|
return () => this.off(type, listener);
|
||||||
@@ -87,7 +95,7 @@ export class EventEmitter<T extends EventMap> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Add the listener entry to the listeners map.
|
// 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 an "off" callback that can be called to stop listening for events.
|
||||||
return () => this.off(type, listener);
|
return () => this.off(type, listener);
|
||||||
|
|||||||
Reference in New Issue
Block a user