From 94c049d930d922069e38ea8700d7ff0970f71e61 Mon Sep 17 00:00:00 2001 From: Carlos Rodrigues Date: Thu, 9 Nov 2023 06:52:28 +0000 Subject: [PATCH] fix(types): remove optional properties from defineProps return type (#6421) close #6420 --- packages/dts-test/setupHelpers.test-d.ts | 12 +++++++++++- packages/runtime-core/src/apiSetupHelpers.ts | 5 +++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/dts-test/setupHelpers.test-d.ts b/packages/dts-test/setupHelpers.test-d.ts index feb4085dea0..838e376da2d 100644 --- a/packages/dts-test/setupHelpers.test-d.ts +++ b/packages/dts-test/setupHelpers.test-d.ts @@ -8,7 +8,8 @@ import { defineSlots, VNode, Ref, - defineModel + defineModel, + toRefs } from 'vue' import { describe, expectType } from './utils' import { defineComponent } from 'vue' @@ -20,6 +21,7 @@ describe('defineProps w/ type declaration', () => { foo: string bool?: boolean boolAndUndefined: boolean | undefined + file?: File | File[] }>() // explicitly declared type should be refined expectType(props.foo) @@ -328,3 +330,11 @@ describe('useSlots', () => { const slots = useSlots() expectType(slots) }) + +// #6420 +describe('toRefs w/ type declaration', () => { + const props = defineProps<{ + file?: File | File[] + }>() + expectType>(toRefs(props).file) +}) diff --git a/packages/runtime-core/src/apiSetupHelpers.ts b/packages/runtime-core/src/apiSetupHelpers.ts index 93200667081..cff0c6511e2 100644 --- a/packages/runtime-core/src/apiSetupHelpers.ts +++ b/packages/runtime-core/src/apiSetupHelpers.ts @@ -4,7 +4,8 @@ import { isFunction, Prettify, UnionToIntersection, - extend + extend, + LooseRequired } from '@vue/shared' import { getCurrentInstance, @@ -82,7 +83,7 @@ export function defineProps< >(props: PP): Prettify>> // overload 3: typed-based declaration export function defineProps(): DefineProps< - TypeProps, + LooseRequired, BooleanKey > // implementation