From 887e54c347ea9eac4c721b5e2288f054873d1d30 Mon Sep 17 00:00:00 2001 From: Blake Newman Date: Thu, 30 Nov 2023 18:37:51 +0000 Subject: [PATCH] fix(types): expose emits as props in functional components (#9234) --- packages/dts-test/functionalComponent.test-d.tsx | 2 +- packages/runtime-core/src/component.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/dts-test/functionalComponent.test-d.tsx b/packages/dts-test/functionalComponent.test-d.tsx index 827e8d63fe7..22efc5849ed 100644 --- a/packages/dts-test/functionalComponent.test-d.tsx +++ b/packages/dts-test/functionalComponent.test-d.tsx @@ -45,7 +45,7 @@ Bar.emits = { Bar.emits = { baz: () => void 0 } // TSX -expectType() +expectType( {}} />) // @ts-expect-error ; // @ts-expect-error diff --git a/packages/runtime-core/src/component.ts b/packages/runtime-core/src/component.ts index 309a7eb0e22..348228081ff 100644 --- a/packages/runtime-core/src/component.ts +++ b/packages/runtime-core/src/component.ts @@ -50,7 +50,8 @@ import { ObjectEmitsOptions, EmitFn, emit, - normalizeEmitsOptions + normalizeEmitsOptions, + EmitsToProps } from './componentEmits' import { EMPTY_OBJ, @@ -131,7 +132,7 @@ export interface FunctionalComponent< > extends ComponentInternalOptions { // use of any here is intentional so it can be a valid JSX Element constructor ( - props: P, + props: P & EmitsToProps, ctx: Omit>>, 'expose'> ): any props?: ComponentPropsOptions