TypeScript Utility Types

Built-in utility types

Partial

interface User {
    name: string;
    age: number;
}
type PartialUser = Partial<User>; # all properties optional

Required

interface User {
    name?: string;
    age?: number;
}
type RequiredUser = Required<User>; # all properties required

Readonly

type ReadonlyUser = Readonly<User>; # all properties readonly

Pick

type UserName = Pick<User, 'name'>; # select specific properties

Omit

type UserWithoutAge = Omit<User, 'age'>; # exclude properties

Record

type UserMap = Record<string, User>; # create object type
let users: UserMap = {
    'user1': { name: 'John', age: 25 }
};

ReturnType

function getUser() {
    return { name: 'John', age: 25 };
}
type User = ReturnType<typeof getUser>; # extract return type