WithUndefinedAsOptionalRecursivetstype WithUndefinedAsOptionalRecursive<T>: T extends object ? { [key in DefinedKeys<T>]-?: WithUndefinedAsOptionalRecursive<T[key]> } & { [key in UndefinedKeys<T>]?: WithUndefinedAsOptionalRecursive<T[key]> } : T; Type parameters Type parameterT