]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(types): expose emits as props in functional components (#9234)
authorBlake Newman <blake.newman@askattest.com>
Thu, 30 Nov 2023 18:37:51 +0000 (18:37 +0000)
committerGitHub <noreply@github.com>
Thu, 30 Nov 2023 18:37:51 +0000 (02:37 +0800)
packages/dts-test/functionalComponent.test-d.tsx
packages/runtime-core/src/component.ts

index 827e8d63fe74cdd3a570c4c18b1fc8fe767e1699..22efc5849ed26cb73a1b704eb62d8ebdcdac5403 100644 (file)
@@ -45,7 +45,7 @@ Bar.emits = {
 Bar.emits = { baz: () => void 0 }
 
 // TSX
-expectType<JSX.Element>(<Bar foo={1} />)
+expectType<JSX.Element>(<Bar foo={1} onUpdate={() => {}} />)
 //  @ts-expect-error
 ;<Foo />
 //  @ts-expect-error
index 309a7eb0e22ca07cd83d27e2bec8b55deaf967fd..348228081ffe218757e65d0b90896d63bddb2ea4 100644 (file)
@@ -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<E>,
     ctx: Omit<SetupContext<E, IfAny<S, {}, SlotsType<S>>>, 'expose'>
   ): any
   props?: ComponentPropsOptions<P>