fix(types): correct type inference of all-optional props (#11644)

fix #11733
fix vuejs/language-tools#4704
This commit is contained in:
山吹色御守 2024-09-20 20:36:57 +08:00 committed by GitHub
parent 235ea4772e
commit 9eca65ee98
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 6 deletions

View File

@ -209,11 +209,13 @@ export function defineComponent<
? TypeEmitsToOptions<TypeEmits> ? TypeEmitsToOptions<TypeEmits>
: RuntimeEmitsOptions, : RuntimeEmitsOptions,
InferredProps = unknown extends TypeProps InferredProps = unknown extends TypeProps
? keyof TypeProps extends never
? string extends RuntimePropsKeys ? string extends RuntimePropsKeys
? ComponentObjectPropsOptions extends RuntimePropsOptions ? ComponentObjectPropsOptions extends RuntimePropsOptions
? {} ? {}
: ExtractPropTypes<RuntimePropsOptions> : ExtractPropTypes<RuntimePropsOptions>
: { [key in RuntimePropsKeys]?: any } : { [key in RuntimePropsKeys]?: any }
: TypeProps
: TypeProps, : TypeProps,
TypeRefs extends Record<string, unknown> = {}, TypeRefs extends Record<string, unknown> = {},
TypeEl extends Element = any, TypeEl extends Element = any,

View File

@ -125,8 +125,10 @@ type InferPropType<T, NullAsAny = true> = [T] extends [null]
: InferPropType<U, false> : InferPropType<U, false>
: [T] extends [Prop<infer V, infer D>] : [T] extends [Prop<infer V, infer D>]
? unknown extends V ? unknown extends V
? keyof V extends never
? IfAny<V, V, D> ? IfAny<V, V, D>
: V : V
: V
: T : T
/** /**