fix(types): better typing for direct setup signature of defineComponent (#10357)

close #8604
close #8855
This commit is contained in:
Shean de Montigny-Desautels 2024-02-25 08:10:08 -05:00 committed by GitHub
parent a4098d587b
commit eadce5b753
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 26 additions and 2 deletions

View File

@ -89,6 +89,30 @@ export type DefineComponent<
> &
PP
type DirectSetupComponent<
P extends Record<string, any>,
E extends EmitsOptions = {},
S extends SlotsType = SlotsType,
Props = P & EmitsToProps<E>,
PP = PublicProps,
> = new (
props: Props & PP,
) => CreateComponentPublicInstance<
Props,
{},
{},
{},
{},
ComponentOptionsMixin,
ComponentOptionsMixin,
E,
PP,
{},
false,
{},
S
>
// defineComponent is a utility that is primarily used for type inference
// when declaring components. Type inference is provided in the component
// options (provided as the argument). The returned value has artificial types
@ -111,7 +135,7 @@ export function defineComponent<
emits?: E | EE[]
slots?: S
},
): (props: Props & EmitsToProps<E>) => any
): DirectSetupComponent<Props, E, S>
export function defineComponent<
Props extends Record<string, any>,
E extends EmitsOptions = {},
@ -127,7 +151,7 @@ export function defineComponent<
emits?: E | EE[]
slots?: S
},
): (props: Props & EmitsToProps<E>) => any
): DirectSetupComponent<Props, E, S>
// overload 2: object format with no props
// (uses user defined props interface)