From: Blake Newman Date: Thu, 30 Nov 2023 18:37:51 +0000 (+0000) Subject: fix(types): expose emits as props in functional components (#9234) X-Git-Tag: v3.3.10~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=887e54c347ea9eac4c721b5e2288f054873d1d30;p=thirdparty%2Fvuejs%2Fcore.git fix(types): expose emits as props in functional components (#9234) --- diff --git a/packages/dts-test/functionalComponent.test-d.tsx b/packages/dts-test/functionalComponent.test-d.tsx index 827e8d63fe..22efc5849e 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 309a7eb0e2..348228081f 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