Skip to content

Commit

Permalink
fix(type): fix prop type infer (#4530)
Browse files Browse the repository at this point in the history
fix #4525
  • Loading branch information
Bigfish8 committed Sep 6, 2021
1 parent 642710e commit 4178d5d
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
8 changes: 4 additions & 4 deletions packages/runtime-core/src/componentProps.ts
Expand Up @@ -109,10 +109,10 @@ type InferPropType<T> = [T] extends [null]
? boolean
: [T] extends [DateConstructor | { type: DateConstructor }]
? Date
: [T] extends [
(DateConstructor | infer U)[] | { type: (DateConstructor | infer U)[] }
]
? Date | InferPropType<U>
: [T] extends [(infer U)[] | { type: (infer U)[] }]
? U extends DateConstructor
? Date | InferPropType<U>
: InferPropType<U>
: [T] extends [Prop<infer V, infer D>]
? unknown extends V
? D
Expand Down
5 changes: 4 additions & 1 deletion test-dts/defineComponent.test-d.tsx
Expand Up @@ -44,6 +44,7 @@ describe('with object props', () => {
date?: Date
l?: Date
ll?: Date | number
lll?: string | number
}

type GT = string & { __brand: unknown }
Expand Down Expand Up @@ -135,7 +136,8 @@ describe('with object props', () => {
},
date: Date,
l: [Date],
ll: [Date, Number]
ll: [Date, Number],
lll: [String, Number]
},
setup(props) {
// type assertion. See https://github.com/SamVerschueren/tsd
Expand Down Expand Up @@ -170,6 +172,7 @@ describe('with object props', () => {
expectType<ExpectedProps['date']>(props.date)
expectType<ExpectedProps['l']>(props.l)
expectType<ExpectedProps['ll']>(props.ll)
expectType<ExpectedProps['lll']>(props.lll)

// @ts-expect-error props should be readonly
expectError((props.a = 1))
Expand Down

0 comments on commit 4178d5d

Please sign in to comment.