fix(types): return type of withDefaults should be readonly (#8601)

This commit is contained in:
zqran 2023-11-10 15:20:02 +08:00 committed by GitHub
parent 46e33744c8
commit f15debc01a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View File

@ -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)

View File

@ -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]>