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<{
|
defineProps<{
|
||||||
n?: number
|
n?: number
|
||||||
bool?: boolean
|
bool?: boolean
|
||||||
|
s?: string
|
||||||
|
|
||||||
generic1?: T[] | { x: T }
|
generic1?: T[] | { x: T }
|
||||||
generic2?: { x: T }
|
generic2?: { x: T }
|
||||||
|
@ -128,6 +129,10 @@ describe('defineProps w/ generic type declaration + withDefaults', <T extends
|
||||||
)
|
)
|
||||||
|
|
||||||
res.n + 1
|
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<T[] | { x: T }>(res.generic1)
|
||||||
expectType<{ x: T }>(res.generic2)
|
expectType<{ x: T }>(res.generic2)
|
||||||
|
|
|
@ -298,8 +298,8 @@ type PropsWithDefaults<
|
||||||
T,
|
T,
|
||||||
Defaults extends InferDefaults<T>,
|
Defaults extends InferDefaults<T>,
|
||||||
BKeys extends keyof T
|
BKeys extends keyof T
|
||||||
> = Omit<T, keyof Defaults> & {
|
> = Readonly<Omit<T, keyof Defaults>> & {
|
||||||
[K in keyof Defaults]-?: K extends keyof T
|
readonly [K in keyof Defaults]-?: K extends keyof T
|
||||||
? Defaults[K] extends undefined
|
? Defaults[K] extends undefined
|
||||||
? T[K]
|
? T[K]
|
||||||
: NotUndefined<T[K]>
|
: NotUndefined<T[K]>
|
||||||
|
|
Loading…
Reference in New Issue