From 6d3bd0538fd97ca38c97abcc1b75dfe2dd43bc7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20Jel=C3=ADnek?= Date: Tue, 16 Dec 2025 23:15:56 +0100 Subject: [PATCH] feat: type `currentTarget` in `on` function --- .changeset/bumpy-radios-live.md | 5 +++++ packages/svelte/src/events/public.d.ts | 5 ++++- packages/svelte/tests/types/events.ts | 2 ++ packages/svelte/types/index.d.ts | 5 ++++- 4 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 .changeset/bumpy-radios-live.md diff --git a/.changeset/bumpy-radios-live.md b/.changeset/bumpy-radios-live.md new file mode 100644 index 0000000000..15422a54d6 --- /dev/null +++ b/.changeset/bumpy-radios-live.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +type `currentTarget` in `on` function diff --git a/packages/svelte/src/events/public.d.ts b/packages/svelte/src/events/public.d.ts index ff42e523b3..96adb2a584 100644 --- a/packages/svelte/src/events/public.d.ts +++ b/packages/svelte/src/events/public.d.ts @@ -30,7 +30,10 @@ export function on( export function on( element: Element, type: Type, - handler: (this: Element, event: HTMLElementEventMap[Type]) => any, + handler: ( + this: Element, + event: HTMLElementEventMap[Type] & { currentTarget: EventTarget & Element } + ) => any, options?: AddEventListenerOptions | undefined ): () => void; /** diff --git a/packages/svelte/tests/types/events.ts b/packages/svelte/tests/types/events.ts index 77891952be..d8f31e2af8 100644 --- a/packages/svelte/tests/types/events.ts +++ b/packages/svelte/tests/types/events.ts @@ -8,6 +8,8 @@ on(window, 'click', (e) => e.button); on(document, 'click', (e) => e.button); +on(document.createElement('input'), 'input', (e) => e.currentTarget?.value); + on( document.body, 'clidck', diff --git a/packages/svelte/types/index.d.ts b/packages/svelte/types/index.d.ts index 9ace341e16..2eb243aca1 100644 --- a/packages/svelte/types/index.d.ts +++ b/packages/svelte/types/index.d.ts @@ -2823,7 +2823,10 @@ declare module 'svelte/events' { export function on( element: Element, type: Type, - handler: (this: Element, event: HTMLElementEventMap[Type]) => any, + handler: ( + this: Element, + event: HTMLElementEventMap[Type] & { currentTarget: EventTarget & Element } + ) => any, options?: AddEventListenerOptions | undefined ): () => void; /**