Skip to content

Commit ff1fa4a

Browse files
authored
🤖 Merge PR DefinitelyTyped#73441 [@types/jquery] Fix event types for namespaced event names by @jwbth
1 parent d93a898 commit ff1fa4a

File tree

2 files changed

+50
-3
lines changed

2 files changed

+50
-3
lines changed

‎types/jquery/jquery-tests.ts‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5133,6 +5133,29 @@ function JQuery() {
51335133
}
51345134
});
51355135
}
5136+
5137+
// https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/69610
5138+
function discussion_69610() {
5139+
$("table").on("click", function(event) {
5140+
// $ExpectType ClickEvent<HTMLElement, undefined, HTMLElement, HTMLElement>
5141+
event;
5142+
});
5143+
5144+
$("table").on("click.namespace", function(event) {
5145+
// $ExpectType ClickEvent<HTMLElement, undefined, HTMLElement, HTMLElement>
5146+
event;
5147+
});
5148+
5149+
$("table").on("click.namespace.namespace2", function(event) {
5150+
// $ExpectType ClickEvent<HTMLElement, undefined, HTMLElement, HTMLElement>
5151+
event;
5152+
});
5153+
5154+
$("table").on("unknown.namespace", function(event) {
5155+
// $ExpectType TriggeredEvent<HTMLElement, undefined, HTMLElement, HTMLElement>
5156+
event;
5157+
});
5158+
}
51365159
}
51375160

51385161
function one() {

‎types/jquery/misc.d.ts‎

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7095,6 +7095,25 @@ $( "#checkMetaKey" ).click(function( event ) {
70957095
[type: string]: TriggeredEvent<TDelegateTarget, TData, TCurrentTarget, TTarget>;
70967096
}
70977097

7098+
type RemoveIndexSignature<T> = {
7099+
[K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
7100+
};
7101+
7102+
type EventType = keyof RemoveIndexSignature<TypeToTriggeredEventMap<any, any, any, any>>;
7103+
7104+
type NamespacedTypeToTriggeredEventMap<
7105+
TDelegateTarget,
7106+
TData,
7107+
TCurrentTarget,
7108+
TTarget,
7109+
> =
7110+
& TypeToTriggeredEventMap<TDelegateTarget, TData, TCurrentTarget, TTarget>
7111+
& {
7112+
[K in `${EventType}.${string}`]: K extends `${infer P}.${string}`
7113+
? TypeToTriggeredEventMap<TDelegateTarget, TData, TCurrentTarget, TTarget>[P]
7114+
: never;
7115+
};
7116+
70987117
// Extra parameters can be passed from trigger()
70997118
type EventHandlerBase<TContext, T> = (this: TContext, t: T, ...args: any[]) => any;
71007119

@@ -7108,10 +7127,15 @@ $( "#checkMetaKey" ).click(function( event ) {
71087127
TData,
71097128
TCurrentTarget,
71107129
TTarget,
7111-
TType extends keyof TypeToTriggeredEventMap<TDelegateTarget, TData, TCurrentTarget, TTarget>,
7130+
TType extends keyof NamespacedTypeToTriggeredEventMap<
7131+
TDelegateTarget,
7132+
TData,
7133+
TCurrentTarget,
7134+
TTarget
7135+
>,
71127136
> = EventHandlerBase<
71137137
TCurrentTarget,
7114-
TypeToTriggeredEventMap<TDelegateTarget, TData, TCurrentTarget, TTarget>[TType]
7138+
NamespacedTypeToTriggeredEventMap<TDelegateTarget, TData, TCurrentTarget, TTarget>[TType]
71157139
>;
71167140

71177141
interface TypeEventHandlers<
@@ -7135,7 +7159,7 @@ $( "#checkMetaKey" ).click(function( event ) {
71357159
TCurrentTarget,
71367160
TTarget,
71377161
> = {
7138-
[TType in keyof TypeToTriggeredEventMap<TDelegateTarget, TData, TCurrentTarget, TTarget>]?:
7162+
[TType in keyof NamespacedTypeToTriggeredEventMap<TDelegateTarget, TData, TCurrentTarget, TTarget>]?:
71397163
| TypeEventHandler<TDelegateTarget, TData, TCurrentTarget, TTarget, TType>
71407164
| false
71417165
| object;

0 commit comments

Comments
 (0)