diff --git a/types/v3-define-component.d.ts b/types/v3-define-component.d.ts index 30f7046e403..a2c47322b49 100644 --- a/types/v3-define-component.d.ts +++ b/types/v3-define-component.d.ts @@ -67,30 +67,6 @@ type DefineComponent< props: PropsOrPropOptions } -/** - * overload 0.0: functional component with array props - */ -export function defineComponent< - PropNames extends string, - Props = Readonly<{ [key in PropNames]?: any }> ->(options: { - functional: true - props?: PropNames[] - render?: (h: CreateElement, context: RenderContext) => any -}): DefineComponent - -/** - * overload 0.1: functional component with object props - */ -export function defineComponent< - PropsOptions extends ComponentPropsOptions = ComponentPropsOptions, - Props = ExtractPropTypes ->(options: { - functional: true - props?: PropsOptions - render?: (h: CreateElement, context: RenderContext) => any -}): DefineComponent - /** * overload 1: object format with no props */ @@ -104,7 +80,7 @@ export function defineComponent< Emits extends EmitsOptions = {}, EmitsNames extends string = string >( - options: ComponentOptionsWithoutProps< + options: { functional?: never } & ComponentOptionsWithoutProps< {}, RawBindings, D, @@ -135,7 +111,7 @@ export function defineComponent< EmitsNames extends string = string, PropsOptions extends ComponentPropsOptions = ComponentPropsOptions >( - options: ComponentOptionsWithArrayProps< + options: { functional?: never } & ComponentOptionsWithArrayProps< PropNames, RawBindings, D, @@ -175,7 +151,7 @@ export function defineComponent< PropsOptions extends ComponentPropsOptions = ComponentPropsOptions >( options: HasDefined extends true - ? ComponentOptionsWithProps< + ? { functional?: never } & ComponentOptionsWithProps< PropsOptions, RawBindings, D, @@ -187,7 +163,7 @@ export function defineComponent< EmitsNames, Props > - : ComponentOptionsWithProps< + : { functional?: never } & ComponentOptionsWithProps< PropsOptions, RawBindings, D, @@ -199,3 +175,27 @@ export function defineComponent< EmitsNames > ): DefineComponent + +/** + * overload 4.1: functional component with array props + */ +export function defineComponent< + PropNames extends string, + Props = Readonly<{ [key in PropNames]?: any }> +>(options: { + functional: true + props?: PropNames[] + render?: (h: CreateElement, context: RenderContext) => any +}): DefineComponent + +/** + * overload 4.2: functional component with object props + */ +export function defineComponent< + PropsOptions extends ComponentPropsOptions = ComponentPropsOptions, + Props = ExtractPropTypes +>(options: { + functional: true + props?: PropsOptions + render?: (h: CreateElement, context: RenderContext) => any +}): DefineComponent