mirror of https://github.com/vuejs/core.git
fix(types): improve defineProps return type with generic arguments
This commit is contained in:
parent
b2c874e3b9
commit
91a931ae87
|
|
@ -76,7 +76,7 @@ export function defineProps<
|
|||
PP extends ComponentObjectPropsOptions = ComponentObjectPropsOptions
|
||||
>(props: PP): Prettify<Readonly<ExtractPropTypes<PP>>>
|
||||
// overload 3: typed-based declaration
|
||||
export function defineProps<TypeProps>(): ResolveProps<TypeProps>
|
||||
export function defineProps<TypeProps>(): DefineProps<TypeProps>
|
||||
// implementation
|
||||
export function defineProps() {
|
||||
if (__DEV__) {
|
||||
|
|
@ -85,13 +85,9 @@ export function defineProps() {
|
|||
return null as any
|
||||
}
|
||||
|
||||
type ResolveProps<T, BooleanKeys extends keyof T = BooleanKey<T>> = Prettify<
|
||||
Readonly<
|
||||
T & {
|
||||
[K in BooleanKeys]-?: boolean
|
||||
}
|
||||
>
|
||||
>
|
||||
type DefineProps<T> = Readonly<T> & {
|
||||
readonly [K in BooleanKey<T>]-?: boolean
|
||||
}
|
||||
|
||||
type BooleanKey<T, K extends keyof T = keyof T> = K extends any
|
||||
? [T[K]] extends [boolean | undefined]
|
||||
|
|
|
|||
Loading…
Reference in New Issue