fix(types/tsx): optional props from Mixin/Extends are treated as required (#2048)
This commit is contained in:
@@ -77,9 +77,11 @@ type MixinToOptionTypes<T> = T extends ComponentOptionsBase<
|
||||
infer M,
|
||||
infer Mixin,
|
||||
infer Extends,
|
||||
any
|
||||
any,
|
||||
any,
|
||||
infer Defaults
|
||||
>
|
||||
? OptionTypesType<P & {}, B & {}, D & {}, C & {}, M & {}> &
|
||||
? OptionTypesType<P & {}, B & {}, D & {}, C & {}, M & {}, Defaults & {}> &
|
||||
IntersectionMixin<Mixin> &
|
||||
IntersectionMixin<Extends>
|
||||
: never
|
||||
@@ -130,6 +132,8 @@ export type CreateComponentPublicInstance<
|
||||
Extends extends ComponentOptionsMixin = ComponentOptionsMixin,
|
||||
E extends EmitsOptions = {},
|
||||
PublicProps = P,
|
||||
Defaults = {},
|
||||
MakeDefaultsOptional extends boolean = false,
|
||||
PublicMixin = IntersectionMixin<Mixin> & IntersectionMixin<Extends>,
|
||||
PublicP = UnwrapMixinsType<PublicMixin, 'P'> & EnsureNonVoid<P>,
|
||||
PublicB = UnwrapMixinsType<PublicMixin, 'B'> & EnsureNonVoid<B>,
|
||||
@@ -137,7 +141,9 @@ export type CreateComponentPublicInstance<
|
||||
PublicC extends ComputedOptions = UnwrapMixinsType<PublicMixin, 'C'> &
|
||||
EnsureNonVoid<C>,
|
||||
PublicM extends MethodOptions = UnwrapMixinsType<PublicMixin, 'M'> &
|
||||
EnsureNonVoid<M>
|
||||
EnsureNonVoid<M>,
|
||||
PublicDefaults = UnwrapMixinsType<PublicMixin, 'Defaults'> &
|
||||
EnsureNonVoid<Defaults>
|
||||
> = ComponentPublicInstance<
|
||||
PublicP,
|
||||
PublicB,
|
||||
@@ -146,7 +152,9 @@ export type CreateComponentPublicInstance<
|
||||
PublicM,
|
||||
E,
|
||||
PublicProps,
|
||||
ComponentOptionsBase<P, B, D, C, M, Mixin, Extends, E>
|
||||
PublicDefaults,
|
||||
MakeDefaultsOptional,
|
||||
ComponentOptionsBase<P, B, D, C, M, Mixin, Extends, E, string, Defaults>
|
||||
>
|
||||
|
||||
// public properties exposed on the proxy, which is used as the render context
|
||||
@@ -159,11 +167,15 @@ export type ComponentPublicInstance<
|
||||
M extends MethodOptions = {},
|
||||
E extends EmitsOptions = {},
|
||||
PublicProps = P,
|
||||
Options = ComponentOptionsBase<any, any, any, any, any, any, any, any>
|
||||
Defaults = {},
|
||||
MakeDefaultsOptional extends boolean = false,
|
||||
Options = ComponentOptionsBase<any, any, any, any, any, any, any, any, any>
|
||||
> = {
|
||||
$: ComponentInternalInstance
|
||||
$data: D
|
||||
$props: P & PublicProps
|
||||
$props: MakeDefaultsOptional extends true
|
||||
? Partial<Defaults> & Omit<P & PublicProps, keyof Defaults>
|
||||
: P & PublicProps
|
||||
$attrs: Data
|
||||
$refs: Data
|
||||
$slots: Slots
|
||||
|
||||
Reference in New Issue
Block a user