From dd137283341ce0e6aabfd158d07d77c6feeb920e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=B1=AA?= <504595380@qq.com> Date: Tue, 25 Mar 2025 11:34:20 +0800 Subject: [PATCH] enhance(api): add generic parameter to `emit` and `emitTo` functions (#13066) closes #13059 --- .changes/change-pr-13066.md | 4 ++++ packages/api/src/event.ts | 6 +++--- packages/api/src/webview.ts | 10 +++++----- packages/api/src/window.ts | 10 +++++----- 4 files changed, 17 insertions(+), 13 deletions(-) create mode 100644 .changes/change-pr-13066.md diff --git a/.changes/change-pr-13066.md b/.changes/change-pr-13066.md new file mode 100644 index 000000000..27e25f997 --- /dev/null +++ b/.changes/change-pr-13066.md @@ -0,0 +1,4 @@ +--- +"@tauri-apps/api": patch:enhance +--- +Add a generic to `emit` and `emitTo` functions for the `payload` instead of the previously used type (`unknown`). diff --git a/packages/api/src/event.ts b/packages/api/src/event.ts index 4ba54311e..e4e403d28 100644 --- a/packages/api/src/event.ts +++ b/packages/api/src/event.ts @@ -174,7 +174,7 @@ async function once( * * @since 1.0.0 */ -async function emit(event: string, payload?: unknown): Promise { +async function emit(event: string, payload?: T): Promise { await invoke('plugin:event|emit', { event, payload @@ -196,10 +196,10 @@ async function emit(event: string, payload?: unknown): Promise { * * @since 2.0.0 */ -async function emitTo( +async function emitTo( target: EventTarget | string, event: string, - payload?: unknown + payload?: T ): Promise { const eventTarget: EventTarget = typeof target === 'string' ? { kind: 'AnyLabel', label: target } : target diff --git a/packages/api/src/webview.ts b/packages/api/src/webview.ts index b82f3ac24..531ab00f7 100644 --- a/packages/api/src/webview.ts +++ b/packages/api/src/webview.ts @@ -291,7 +291,7 @@ class Webview { * @param event Event name. Must include only alphanumeric characters, `-`, `/`, `:` and `_`. * @param payload Event payload. */ - async emit(event: string, payload?: unknown): Promise { + async emit(event: string, payload?: T): Promise { if (localTauriEvents.includes(event)) { // eslint-disable-next-line for (const handler of this.listeners[event] || []) { @@ -303,7 +303,7 @@ class Webview { } return } - return emit(event, payload) + return emit(event, payload) } /** @@ -319,10 +319,10 @@ class Webview { * @param event Event name. Must include only alphanumeric characters, `-`, `/`, `:` and `_`. * @param payload Event payload. */ - async emitTo( + async emitTo( target: string | EventTarget, event: string, - payload?: unknown + payload?: T ): Promise { if (localTauriEvents.includes(event)) { // eslint-disable-next-line @@ -335,7 +335,7 @@ class Webview { } return } - return emitTo(target, event, payload) + return emitTo(target, event, payload) } /** @ignore */ diff --git a/packages/api/src/window.ts b/packages/api/src/window.ts index 4904dee49..bd9ebbbdc 100644 --- a/packages/api/src/window.ts +++ b/packages/api/src/window.ts @@ -441,7 +441,7 @@ class Window { * @param event Event name. Must include only alphanumeric characters, `-`, `/`, `:` and `_`. * @param payload Event payload. */ - async emit(event: string, payload?: unknown): Promise { + async emit(event: string, payload?: T): Promise { if (localTauriEvents.includes(event)) { // eslint-disable-next-line for (const handler of this.listeners[event] || []) { @@ -453,7 +453,7 @@ class Window { } return } - return emit(event, payload) + return emit(event, payload) } /** @@ -468,10 +468,10 @@ class Window { * @param event Event name. Must include only alphanumeric characters, `-`, `/`, `:` and `_`. * @param payload Event payload. */ - async emitTo( + async emitTo( target: string | EventTarget, event: string, - payload?: unknown + payload?: T ): Promise { if (localTauriEvents.includes(event)) { // eslint-disable-next-line security/detect-object-injection @@ -484,7 +484,7 @@ class Window { } return } - return emitTo(target, event, payload) + return emitTo(target, event, payload) } /** @ignore */