diff --git a/packages/dts-test/setupHelpers.test-d.ts b/packages/dts-test/setupHelpers.test-d.ts index 883ebe6b254..8b6a53a8183 100644 --- a/packages/dts-test/setupHelpers.test-d.ts +++ b/packages/dts-test/setupHelpers.test-d.ts @@ -19,6 +19,7 @@ describe('defineProps w/ type declaration', () => { // type declaration const props = defineProps<{ foo: string + baz?: number bool?: boolean boolAndUndefined: boolean | undefined file?: File | File[] @@ -28,6 +29,12 @@ describe('defineProps w/ type declaration', () => { // @ts-expect-error props.bar + expectType<{ + foo: string + baz: number | undefined + bool: boolean + boolAndUndefined: boolean + }>(props) expectType(props.bool) expectType(props.boolAndUndefined) }) diff --git a/packages/runtime-core/src/apiSetupHelpers.ts b/packages/runtime-core/src/apiSetupHelpers.ts index 39d8edbcc20..7e16c0f99de 100644 --- a/packages/runtime-core/src/apiSetupHelpers.ts +++ b/packages/runtime-core/src/apiSetupHelpers.ts @@ -92,7 +92,9 @@ export function defineProps() { return null as any } -export type DefineProps = Readonly & { +export type DefineProps = Readonly< + LooseRequired +> & { readonly [K in BKeys]-?: boolean }