From 4645a42b798b473dce84381ee8ad2199ac6a8361 Mon Sep 17 00:00:00 2001 From: Husam Ibrahim <39692071+HusamIbrahim@users.noreply.github.com> Date: Mon, 6 Sep 2021 00:16:44 +0200 Subject: [PATCH] types(runtime-core): fix for multiple possible prop types including Date (#4518) fix #4517 --- packages/runtime-core/src/componentProps.ts | 4 ++++ test-dts/defineComponent.test-d.tsx | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/runtime-core/src/componentProps.ts b/packages/runtime-core/src/componentProps.ts index 7218d22288b..cca7fbcdc72 100644 --- a/packages/runtime-core/src/componentProps.ts +++ b/packages/runtime-core/src/componentProps.ts @@ -109,6 +109,10 @@ type InferPropType = [T] extends [null] ? boolean : [T] extends [DateConstructor | { type: DateConstructor }] ? Date + : [T] extends [ + (DateConstructor | infer U)[] | { type: (DateConstructor | infer U)[] } + ] + ? Date | InferPropType : [T] extends [Prop] ? unknown extends V ? D diff --git a/test-dts/defineComponent.test-d.tsx b/test-dts/defineComponent.test-d.tsx index 4766bddb4b3..fb50648b579 100644 --- a/test-dts/defineComponent.test-d.tsx +++ b/test-dts/defineComponent.test-d.tsx @@ -42,6 +42,8 @@ describe('with object props', () => { kkk?: any validated?: string date?: Date + l?: Date + ll?: Date | number } type GT = string & { __brand: unknown } @@ -131,7 +133,9 @@ describe('with object props', () => { // validator requires explicit annotation validator: (val: unknown) => val !== '' }, - date: Date + date: Date, + l: [Date], + ll: [Date, Number] }, setup(props) { // type assertion. See https://github.com/SamVerschueren/tsd @@ -164,6 +168,8 @@ describe('with object props', () => { expectType(props.kkk) expectType(props.validated) expectType(props.date) + expectType(props.l) + expectType(props.ll) // @ts-expect-error props should be readonly expectError((props.a = 1))