import { NonUndefined } from './nonUndefined'; /** * 全部设置为必须 * @example * 输入: * type Example = { * first?: { * second?: { * name?: string; * }; * }; * }; * type example = DeepRequired; * 输出: * type example = { * first?: { * second?: { * name?: string; * }; * }; * }; */ export type DeepRequired = T extends (...args: any[]) => any ? T : T extends any[] ? DeepRequiredArray : T extends object ? DeepRequiredObject : T; export interface DeepRequiredArray extends Array>> { } export type DeepRequiredObject = { [P in keyof T]-?: DeepRequired>; };