Skip to content

TypeAlias.DeepRequired

github-actions[bot] edited this page Jun 9, 2026 · 34 revisions

umt / DeepRequired

Type Alias: DeepRequired<T>

DeepRequired<T> = T extends Record<PropertyKey, any> ? { [P in keyof T]-?: DeepRequired<T[P]> } : T

Defined in: types/logic/deepRequired.ts:35

Recursively makes all properties in T required, including nested objects. Unlike TypeScript's built-in Required which only affects top-level properties, DeepRequired removes the optional modifier from all levels of nested objects.

Type Parameters

T

T

The type to make deeply required

Example

interface User {
  id?: number;
  profile?: {
    name?: string;
    address?: {
      street?: string;
      city?: string;
    };
  };
}

type RequiredUser = DeepRequired<User>;
// Result:
// {
//   id: number;
//   profile: {
//     name: string;
//     address: {
//       street: string;
//       city: string;
//     };
//   };
// }

API

Classes

Interfaces

Type Aliases

Variables

Functions

Clone this wiki locally