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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user