Skip to content

Commit 46a07f7

Browse files
authored
Improve type inference for the listener callback (#19)
1 parent c782d96 commit 46a07f7

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

Diff for: index.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,12 @@ function safeClosest(event: Event, selector: string): Element | void {
8383
*/
8484
function delegate<
8585
TElement extends Element = Element,
86-
TEvent extends Event = Event
86+
TEventType extends EventType = EventType
8787
>(
8888
base: EventTarget | Document | ArrayLike<Element> | string,
8989
selector: string,
90-
type: EventType,
91-
callback: delegate.EventHandler<TEvent, TElement>,
90+
type: TEventType,
91+
callback: delegate.EventHandler<GlobalEventHandlersEventMap[TEventType], TElement>,
9292
options?: boolean | AddEventListenerOptions
9393
): delegate.Subscription {
9494
// Handle Selector-based usage
@@ -101,7 +101,7 @@ function delegate<
101101
const subscriptions = Array.prototype.map.call(
102102
base,
103103
(element: EventTarget) => {
104-
return delegate<TElement, TEvent>(
104+
return delegate<TElement, TEventType>(
105105
element,
106106
selector,
107107
type,
@@ -127,7 +127,7 @@ function delegate<
127127
const delegateTarget = safeClosest(event, selector);
128128
if (delegateTarget) {
129129
(event as any).delegateTarget = delegateTarget;
130-
callback.call(baseElement, event as delegate.Event<TEvent, TElement>);
130+
callback.call(baseElement, event as delegate.Event<GlobalEventHandlersEventMap[TEventType], TElement>);
131131
}
132132
};
133133

0 commit comments

Comments
 (0)