fix(types/sfc): fix withDefaults type inference when using union types (#4925)
This commit is contained in:
@@ -127,20 +127,21 @@ export function defineExpose(exposed?: Record<string, any>) {
|
||||
type NotUndefined<T> = T extends undefined ? never : T
|
||||
|
||||
type InferDefaults<T> = {
|
||||
[K in keyof T]?: NotUndefined<T[K]> extends
|
||||
| number
|
||||
| string
|
||||
| boolean
|
||||
| symbol
|
||||
| Function
|
||||
? NotUndefined<T[K]>
|
||||
: (props: T) => NotUndefined<T[K]>
|
||||
[K in keyof T]?: InferDefault<T, NotUndefined<T[K]>>
|
||||
}
|
||||
|
||||
type PropsWithDefaults<Base, Defaults> = Base &
|
||||
{
|
||||
[K in keyof Defaults]: K extends keyof Base ? NotUndefined<Base[K]> : never
|
||||
}
|
||||
type InferDefault<P, T> = T extends
|
||||
| number
|
||||
| string
|
||||
| boolean
|
||||
| symbol
|
||||
| Function
|
||||
? T
|
||||
: (props: P) => T
|
||||
|
||||
type PropsWithDefaults<Base, Defaults> = Base & {
|
||||
[K in keyof Defaults]: K extends keyof Base ? NotUndefined<Base[K]> : never
|
||||
}
|
||||
|
||||
/**
|
||||
* Vue `<script setup>` compiler macro for providing props default values when
|
||||
|
||||
Reference in New Issue
Block a user