Merge 96b0dc2e10
into 5f8314cb7f
This commit is contained in:
commit
a8dd43cba4
|
@ -1870,6 +1870,25 @@ defineComponent({
|
|||
},
|
||||
})
|
||||
|
||||
describe('object props w/ PropType<boolean>', () => {
|
||||
const MyComponent = defineComponent({
|
||||
props: {
|
||||
b1: { type: [Boolean] as PropType<boolean> },
|
||||
b2: {
|
||||
type: [Boolean, String] as PropType<boolean | string>,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
setup(props) {
|
||||
expectType<boolean>(props.b1)
|
||||
expectType<boolean | string>(props.b2)
|
||||
},
|
||||
})
|
||||
expectType<JSX.Element>(<MyComponent b1 b2 />)
|
||||
// @ts-expect-error
|
||||
;<MyComponent />
|
||||
})
|
||||
|
||||
import type * as vue from 'vue'
|
||||
|
||||
interface ErrorMessageSlotProps {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import {
|
||||
type PropType,
|
||||
type Ref,
|
||||
type Slots,
|
||||
type VNode,
|
||||
|
@ -269,11 +270,17 @@ describe('defineProps w/ runtime declaration', () => {
|
|||
type: Array,
|
||||
required: true,
|
||||
},
|
||||
b1: Boolean as PropType<boolean>,
|
||||
b2: Boolean as PropType<any>,
|
||||
b3: Number as PropType<number>,
|
||||
})
|
||||
expectType<{
|
||||
foo?: string
|
||||
bar: number
|
||||
baz: unknown[]
|
||||
b1: boolean
|
||||
b2?: any
|
||||
b3?: number
|
||||
}>(props)
|
||||
|
||||
props.foo && props.foo + 'bar'
|
||||
|
|
|
@ -90,6 +90,8 @@ type RequiredKeys<T> = {
|
|||
? T[K] extends { default: undefined | (() => undefined) }
|
||||
? never
|
||||
: K
|
||||
: T[K] extends PropType<infer B> | { type: PropType<infer B> }
|
||||
? IfAny<B, never, B extends boolean ? K : never>
|
||||
: never
|
||||
}[keyof T]
|
||||
|
||||
|
@ -104,6 +106,10 @@ type DefaultKeys<T> = {
|
|||
? T[K] extends { type: BooleanConstructor; required: true } // not default if Boolean is marked as required
|
||||
? never
|
||||
: K
|
||||
: T[K] extends
|
||||
| PropType<infer B>
|
||||
| { type: PropType<infer B>; required?: false }
|
||||
? IfAny<B, never, B extends boolean ? K : never>
|
||||
: never
|
||||
}[keyof T]
|
||||
|
||||
|
|
Loading…
Reference in New Issue