defineProps<{
n?: number
bool?: boolean
+ s?: string
generic1?: T[] | { x: T }
generic2?: { x: T }
)
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)
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]>