From: daiwei Date: Thu, 9 Jan 2025 08:02:10 +0000 (+0800) Subject: fix(types): EmitsOptions support named tuple syntax X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F12676%2Fhead;p=thirdparty%2Fvuejs%2Fcore.git fix(types): EmitsOptions support named tuple syntax --- diff --git a/packages-private/dts-test/defineComponent.test-d.tsx b/packages-private/dts-test/defineComponent.test-d.tsx index fda3ca4856..3ff27f2fea 100644 --- a/packages-private/dts-test/defineComponent.test-d.tsx +++ b/packages-private/dts-test/defineComponent.test-d.tsx @@ -1368,6 +1368,20 @@ describe('function syntax w/ emits', () => { }, }, ) + + defineComponent< + {}, + { + update: [value: string] // named tuple syntax + } + >((props, ctx) => { + ctx.emit('update', '123') + // @ts-expect-error + ctx.emit('update', 123) + // @ts-expect-error + ctx.emit('non-exist') + return () => {} + }) }) describe('function syntax w/ runtime props', () => { diff --git a/packages/runtime-core/src/componentEmits.ts b/packages/runtime-core/src/componentEmits.ts index db52bc88c3..86230f874b 100644 --- a/packages/runtime-core/src/componentEmits.ts +++ b/packages/runtime-core/src/componentEmits.ts @@ -35,7 +35,7 @@ import type { ComponentPublicInstance } from './componentPublicInstance' export type ObjectEmitsOptions = Record< string, - ((...args: any[]) => any) | null + ((...args: any[]) => any) | null | any[] > export type EmitsOptions = ObjectEmitsOptions | string[]