/** * Makes all properties in T optional recursively. * * This differs from Partial in that Partial only makes top-level properties optional. * * Example: * ```typescript * interface User { * id?: string; * email: string; * roles: { * id: string; * name?: string; * }[]; * name: { * first: string; * middle?: string; * last: string; * suffix?: string; * }, * birthDate: Date; * } * // If we cast the type above as DeepPartial, it becomes: * // { * // id?: string; // All properties (even nested) are made optional * // email?: string; * // roles?: { * // id?: string; * // name?: string; * // }[]; * // name?: { * // first?: string; * // middle?: string; * // last?: string; * // suffix?: string; * // }, * // birthDate?: Date; * // } * ``` * @typeParam T The type to cast to [[DeepPartial]]. */ export declare type DeepPartial = Partial<{ [P in keyof T]: DeepPartial; }>;