diff --git a/packages/runtime-core/src/componentOptions.ts b/packages/runtime-core/src/componentOptions.ts index 72fffe241..816a49c60 100644 --- a/packages/runtime-core/src/componentOptions.ts +++ b/packages/runtime-core/src/componentOptions.ts @@ -106,7 +106,7 @@ export interface ComponentOptionsBase< components?: Record directives?: Record inheritAttrs?: boolean - emits?: E | EE[] + emits?: (E | EE[]) & ThisType // Internal ------------------------------------------------------------------ diff --git a/test-dts/defineComponent.test-d.tsx b/test-dts/defineComponent.test-d.tsx index f7dacfcbe..94669213e 100644 --- a/test-dts/defineComponent.test-d.tsx +++ b/test-dts/defineComponent.test-d.tsx @@ -710,6 +710,17 @@ describe('emits', () => { const instance = {} as ComponentPublicInstance instance.$emit('test', 1) instance.$emit('test') + + // `this` should be void inside of emits validators + defineComponent({ + props: ['bar'], + emits: { + foo(): boolean { + // @ts-expect-error + return this.bar === 3 + } + } + }) }) describe('componentOptions setup should be `SetupContext`', () => {