Type Alias RequiredRecursive<T>

type RequiredRecursive<T> = {
    [P in keyof T]-?: T[P] extends object
    | undefined
        ? RequiredRecursive<T[P]>
        : T[P]
}