mirror of https://github.com/vuejs/core.git
fix(types): return type of withDefaults should be readonly (#8601)
This commit is contained in:
parent
46e33744c8
commit
f15debc01a
|
@ -110,6 +110,7 @@ describe('defineProps w/ generic type declaration + withDefaults', <T extends
|
|||
defineProps<{
|
||||
n?: number
|
||||
bool?: boolean
|
||||
s?: string
|
||||
|
||||
generic1?: T[] | { x: T }
|
||||
generic2?: { x: T }
|
||||
|
@ -128,6 +129,10 @@ describe('defineProps w/ generic type declaration + withDefaults', <T extends
|
|||
)
|
||||
|
||||
res.n + 1
|
||||
// @ts-expect-error should be readonly
|
||||
res.n++
|
||||
// @ts-expect-error should be readonly
|
||||
res.s = ''
|
||||
|
||||
expectType<T[] | { x: T }>(res.generic1)
|
||||
expectType<{ x: T }>(res.generic2)
|
||||
|
|
|
@ -298,8 +298,8 @@ type PropsWithDefaults<
|
|||
T,
|
||||
Defaults extends InferDefaults<T>,
|
||||
BKeys extends keyof T
|
||||
> = Omit<T, keyof Defaults> & {
|
||||
[K in keyof Defaults]-?: K extends keyof T
|
||||
> = Readonly<Omit<T, keyof Defaults>> & {
|
||||
readonly [K in keyof Defaults]-?: K extends keyof T
|
||||
? Defaults[K] extends undefined
|
||||
? T[K]
|
||||
: NotUndefined<T[K]>
|
||||
|
|
Loading…
Reference in New Issue