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
|
? boolean
|
||||||
: [T] extends [DateConstructor | { type: DateConstructor }]
|
: [T] extends [DateConstructor | { type: DateConstructor }]
|
||||||
? Date
|
? Date
|
||||||
|
: [T] extends [
|
||||||
|
(DateConstructor | infer U)[] | { type: (DateConstructor | infer U)[] }
|
||||||
|
]
|
||||||
|
? Date | InferPropType<U>
|
||||||
: [T] extends [Prop<infer V, infer D>]
|
: [T] extends [Prop<infer V, infer D>]
|
||||||
? unknown extends V
|
? unknown extends V
|
||||||
? D
|
? D
|
||||||
|
@ -42,6 +42,8 @@ describe('with object props', () => {
|
|||||||
kkk?: any
|
kkk?: any
|
||||||
validated?: string
|
validated?: string
|
||||||
date?: Date
|
date?: Date
|
||||||
|
l?: Date
|
||||||
|
ll?: Date | number
|
||||||
}
|
}
|
||||||
|
|
||||||
type GT = string & { __brand: unknown }
|
type GT = string & { __brand: unknown }
|
||||||
@ -131,7 +133,9 @@ describe('with object props', () => {
|
|||||||
// validator requires explicit annotation
|
// validator requires explicit annotation
|
||||||
validator: (val: unknown) => val !== ''
|
validator: (val: unknown) => val !== ''
|
||||||
},
|
},
|
||||||
date: Date
|
date: Date,
|
||||||
|
l: [Date],
|
||||||
|
ll: [Date, Number]
|
||||||
},
|
},
|
||||||
setup(props) {
|
setup(props) {
|
||||||
// type assertion. See https://github.com/SamVerschueren/tsd
|
// type assertion. See https://github.com/SamVerschueren/tsd
|
||||||
@ -164,6 +168,8 @@ describe('with object props', () => {
|
|||||||
expectType<ExpectedProps['kkk']>(props.kkk)
|
expectType<ExpectedProps['kkk']>(props.kkk)
|
||||||
expectType<ExpectedProps['validated']>(props.validated)
|
expectType<ExpectedProps['validated']>(props.validated)
|
||||||
expectType<ExpectedProps['date']>(props.date)
|
expectType<ExpectedProps['date']>(props.date)
|
||||||
|
expectType<ExpectedProps['l']>(props.l)
|
||||||
|
expectType<ExpectedProps['ll']>(props.ll)
|
||||||
|
|
||||||
// @ts-expect-error props should be readonly
|
// @ts-expect-error props should be readonly
|
||||||
expectError((props.a = 1))
|
expectError((props.a = 1))
|
||||||
|
Loading…
Reference in New Issue
Block a user