diff --git a/packages/dts-test/defineComponent.test-d.tsx b/packages/dts-test/defineComponent.test-d.tsx index 963034d40cf..bd6488b7f35 100644 --- a/packages/dts-test/defineComponent.test-d.tsx +++ b/packages/dts-test/defineComponent.test-d.tsx @@ -1415,8 +1415,8 @@ describe('slots', () => { item: [number] }>, setup(props, { slots }) { - expectType<(foo: string, bar: number) => any>(slots.default) - expectType<(scope: number) => any>(slots.item) + expectType any)>(slots.default) + expectType any)>(slots.item) } }) diff --git a/packages/dts-test/functionalComponent.test-d.tsx b/packages/dts-test/functionalComponent.test-d.tsx index 9d4ad378794..3087dcf43f6 100644 --- a/packages/dts-test/functionalComponent.test-d.tsx +++ b/packages/dts-test/functionalComponent.test-d.tsx @@ -1,4 +1,4 @@ -import { h, Text, FunctionalComponent, Component, SlotsType, VNode } from 'vue' +import { h, Text, FunctionalComponent, Component, VNode } from 'vue' import { expectType } from './utils' // simple function signature @@ -73,7 +73,7 @@ const Quux: FunctionalComponent<{}, {}, { default: [foo: number] }> = ( props, { emit, slots } ) => { - expectType<{ default: (foo: number) => VNode[] }>(slots) + expectType<{ default: undefined | ((foo: number) => VNode[]) }>(slots) } expectType(Quux) ; diff --git a/packages/runtime-core/src/component.ts b/packages/runtime-core/src/component.ts index f8562ff2d9c..068ccc64c85 100644 --- a/packages/runtime-core/src/component.ts +++ b/packages/runtime-core/src/component.ts @@ -125,7 +125,7 @@ export interface ComponentInternalOptions { export interface FunctionalComponent< P = {}, E extends EmitsOptions = {}, - S extends Record = {} + S extends Record = Record > extends ComponentInternalOptions { // use of any here is intentional so it can be a valid JSX Element constructor (props: P, ctx: Omit>, 'expose'>): any diff --git a/packages/runtime-core/src/componentSlots.ts b/packages/runtime-core/src/componentSlots.ts index e9619926434..696b9558cca 100644 --- a/packages/runtime-core/src/componentSlots.ts +++ b/packages/runtime-core/src/componentSlots.ts @@ -41,9 +41,9 @@ export type TypedSlots = [keyof S] extends [never] ? Slots : Readonly< Prettify<{ - [K in keyof NonNullable]: Slot< - NonNullable[K] - > + [K in keyof NonNullable]: + | Slot[K]> + | undefined }> >