From: Carlos Rodrigues Date: Thu, 9 Nov 2023 06:52:28 +0000 (+0000) Subject: fix(types): remove optional properties from defineProps return type (#6421) X-Git-Tag: v3.3.9~54 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=94c049d930d922069e38ea8700d7ff0970f71e61;p=thirdparty%2Fvuejs%2Fcore.git fix(types): remove optional properties from defineProps return type (#6421) close #6420 --- diff --git a/packages/dts-test/setupHelpers.test-d.ts b/packages/dts-test/setupHelpers.test-d.ts index feb4085dea..838e376da2 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 9320066708..cff0c6511e 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