types(runtime-core): fix for multiple possible prop types including Date (#4518)
fix #4517
This commit is contained in:
parent
fac9a2926d
commit
4645a42b79
@ -109,6 +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 [Prop<infer V, infer D>]
|
||||
? unknown extends V
|
||||
? D
|
||||
|
@ -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<ExpectedProps['kkk']>(props.kkk)
|
||||
expectType<ExpectedProps['validated']>(props.validated)
|
||||
expectType<ExpectedProps['date']>(props.date)
|
||||
expectType<ExpectedProps['l']>(props.l)
|
||||
expectType<ExpectedProps['ll']>(props.ll)
|
||||
|
||||
// @ts-expect-error props should be readonly
|
||||
expectError((props.a = 1))
|
||||
|
Loading…
Reference in New Issue
Block a user