diff --git a/packages/runtime-core/src/apiSetupHelpers.ts b/packages/runtime-core/src/apiSetupHelpers.ts index 0ab3d252d55..6f6097aa809 100644 --- a/packages/runtime-core/src/apiSetupHelpers.ts +++ b/packages/runtime-core/src/apiSetupHelpers.ts @@ -58,7 +58,13 @@ export function defineProps< PP extends ComponentObjectPropsOptions = ComponentObjectPropsOptions >(props: PP): Readonly> // overload 3: typed-based declaration -export function defineProps(): Readonly +export function defineProps(): Readonly< + Omit> & { + [K in keyof Pick>]-?: NotUndefined< + TypeProps[K] + > + } +> // implementation export function defineProps() { if (__DEV__) { @@ -128,6 +134,12 @@ export function defineExpose< type NotUndefined = T extends undefined ? never : T +type BooleanKey = K extends any + ? [T[K]] extends [boolean | undefined] + ? K + : never + : never + type InferDefaults = { [K in keyof T]?: InferDefault> } @@ -149,7 +161,6 @@ type PropsWithDefaults = Base & { : NotUndefined : never } - /** * Vue `