See code below:
type Check<T> = T extends Record<string, string> ? true : false
type T1 = Check<{ id: string }> // true
type T2 = Check<Partial<{ id: string }>> // true
type T3 = Check<Record<string, string>> // true
type T4 = Check<Partial<Record<string, string>>> // false
It seems undefined
that makes Partial<Record<string, string>>
not satisfy Record<string, string>
, but why Partial<{ id: string }>
satisfies?