From: 山吹色御守 <85992002+KazariEX@users.noreply.github.com> Date: Fri, 20 Sep 2024 12:36:57 +0000 (+0800) Subject: fix(types): correct type inference of all-optional props (#11644) X-Git-Tag: v3.5.7~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9eca65ee9871d1ac878755afa9a3eb1b02030350;p=thirdparty%2Fvuejs%2Fcore.git fix(types): correct type inference of all-optional props (#11644) fix #11733 fix vuejs/language-tools#4704 --- diff --git a/packages/runtime-core/src/apiDefineComponent.ts b/packages/runtime-core/src/apiDefineComponent.ts index 138f185fca..3748fc81c6 100644 --- a/packages/runtime-core/src/apiDefineComponent.ts +++ b/packages/runtime-core/src/apiDefineComponent.ts @@ -209,11 +209,13 @@ export function defineComponent< ? TypeEmitsToOptions : RuntimeEmitsOptions, InferredProps = unknown extends TypeProps - ? string extends RuntimePropsKeys - ? ComponentObjectPropsOptions extends RuntimePropsOptions - ? {} - : ExtractPropTypes - : { [key in RuntimePropsKeys]?: any } + ? keyof TypeProps extends never + ? string extends RuntimePropsKeys + ? ComponentObjectPropsOptions extends RuntimePropsOptions + ? {} + : ExtractPropTypes + : { [key in RuntimePropsKeys]?: any } + : TypeProps : TypeProps, TypeRefs extends Record = {}, TypeEl extends Element = any, diff --git a/packages/runtime-core/src/componentProps.ts b/packages/runtime-core/src/componentProps.ts index c864ba1553..e07fb47678 100644 --- a/packages/runtime-core/src/componentProps.ts +++ b/packages/runtime-core/src/componentProps.ts @@ -125,7 +125,9 @@ type InferPropType = [T] extends [null] : InferPropType : [T] extends [Prop] ? unknown extends V - ? IfAny + ? keyof V extends never + ? IfAny + : V : V : T