Skip to content

Commit 9eca65e

Browse files
authoredSep 20, 2024··
fix(types): correct type inference of all-optional props (#11644)
fix #11733 fix vuejs/language-tools#4704
1 parent 235ea47 commit 9eca65e

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed
 

‎packages/runtime-core/src/apiDefineComponent.ts

+7-5
Original file line numberDiff line numberDiff line change
@@ -209,11 +209,13 @@ export function defineComponent<
209209
? TypeEmitsToOptions<TypeEmits>
210210
: RuntimeEmitsOptions,
211211
InferredProps = unknown extends TypeProps
212-
? string extends RuntimePropsKeys
213-
? ComponentObjectPropsOptions extends RuntimePropsOptions
214-
? {}
215-
: ExtractPropTypes<RuntimePropsOptions>
216-
: { [key in RuntimePropsKeys]?: any }
212+
? keyof TypeProps extends never
213+
? string extends RuntimePropsKeys
214+
? ComponentObjectPropsOptions extends RuntimePropsOptions
215+
? {}
216+
: ExtractPropTypes<RuntimePropsOptions>
217+
: { [key in RuntimePropsKeys]?: any }
218+
: TypeProps
217219
: TypeProps,
218220
TypeRefs extends Record<string, unknown> = {},
219221
TypeEl extends Element = any,

‎packages/runtime-core/src/componentProps.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,9 @@ type InferPropType<T, NullAsAny = true> = [T] extends [null]
125125
: InferPropType<U, false>
126126
: [T] extends [Prop<infer V, infer D>]
127127
? unknown extends V
128-
? IfAny<V, V, D>
128+
? keyof V extends never
129+
? IfAny<V, V, D>
130+
: V
129131
: V
130132
: T
131133

0 commit comments

Comments
 (0)
Please sign in to comment.