Typescript Utility Types

Partial Type

type User = {
    id: number;
    name: string;
  };
  
  type PartialUser = Partial<User>;
  
  // Output:
  // {
  //   id?: number;
  //   name?: string;
  // }
Partial Type Detail

Required Type

type Config = {
    url?: string;
    port?: number;
  };
  
  type StrictConfig = Required<Config>;
  
  // Output:
  // {
  //   url: string;
  //   port: number;
  // }
Required Type Detail

Pick Type

type Person = {
    name: string;
    age: number;
    city: string;
  };
  
  type PersonName = Pick<Person, "name">;
  
  // Output:
  // {
  //   name: string;
  // }
Pick Type Detail

Omit Type

type Person = {
    name: string;
    age: number;
    city: string;
  };
  
  type WithoutAge = Omit<Person, "age">;
  
  // Output:
  // {
  //   name: string;
  //   city: string;
  // }
Omit Type Detail

Record Type

type Role = "admin" | "user";
  
  type Permissions = Record<Role, boolean>;
  
  // Output:
  // {
  //   admin: boolean;
  //   user: boolean;
  // }
Record Type Detail

Exclude Type

type Roles = "admin" | "user" | "guest";
  
  type Limited = Exclude<Roles, "guest">;
  
  // Output:
  // "admin" | "user"
  // ...
  // ...
Exclude Type Detail

Extract Type

type Roles = "admin" | "user" | "guest";
  
  type OnlyUsers = Extract<Roles, "user" | "guest">;
  
  // Output:
  // "user" | "guest"
  // ...
  // ...
Extract Type Detail

Non-Nullable Type

type MaybeString = string | null | undefined;
  
  type SafeString = NonNullable<MaybeString>;
  
  // Output:
  // string
  // ...
  // ...
  // ...
Non-Nullable Type Detail

Readonly Type

type Todo = {
  title: string;
  done: boolean;
};

type ReadonlyTodo = Readonly<Todo>;

// Output:
// {
//   readonly title: string;
//   readonly done: boolean;
// }
Readonly Type Detail

Return Type

function getAge() {
    return 30;
  }
  
  type Age = ReturnType<typeof getAge>;
  
  // Output:
  // number
  // ...
  // ...
Return Type Detail