DeepNonNullable
DeepNonNullable
@example
// Expect: {
// first: {
// second: {
// name: string;
// };
// };
// }
type NestedProps = {
first?: null | {
second?: null | {
name?: string | null |
undefined;
};
};
};
type RequiredNestedProps = DeepNonNullable<NestedProps>;
type DeepNonNullable<T> = T extends (...args: any[]) => any ? T : T extends any[] ? _DeepNonNullableArray<T[number]> : T extends object ? _DeepNonNullableObject<T> : T;