Typescript Utility Types
Partial Type
type User = {
id: number;
name: string;
};
type PartialUser = Partial<User>;
// Output:
// {
// id?: number;
// name?: string;
// }
Partial Type DetailRequired Type
type Config = {
url?: string;
port?: number;
};
type StrictConfig = Required<Config>;
// Output:
// {
// url: string;
// port: number;
// }
Required Type DetailPick Type
type Person = {
name: string;
age: number;
city: string;
};
type PersonName = Pick<Person, "name">;
// Output:
// {
// name: string;
// }
Pick Type DetailOmit Type
type Person = {
name: string;
age: number;
city: string;
};
type WithoutAge = Omit<Person, "age">;
// Output:
// {
// name: string;
// city: string;
// }
Omit Type DetailRecord Type
type Role = "admin" | "user";
type Permissions = Record<Role, boolean>;
// Output:
// {
// admin: boolean;
// user: boolean;
// }
Record Type DetailExclude Type
type Roles = "admin" | "user" | "guest";
type Limited = Exclude<Roles, "guest">;
// Output:
// "admin" | "user"
// ...
// ...
Exclude Type DetailExtract Type
type Roles = "admin" | "user" | "guest";
type OnlyUsers = Extract<Roles, "user" | "guest">;
// Output:
// "user" | "guest"
// ...
// ...
Extract Type DetailNon-Nullable Type
type MaybeString = string | null | undefined;
type SafeString = NonNullable<MaybeString>;
// Output:
// string
// ...
// ...
// ...
Non-Nullable Type DetailReadonly Type
type Todo = {
title: string;
done: boolean;
};
type ReadonlyTodo = Readonly<Todo>;
// Output:
// {
// readonly title: string;
// readonly done: boolean;
// }
Readonly Type DetailReturn Type
function getAge() {
return 30;
}
type Age = ReturnType<typeof getAge>;
// Output:
// number
// ...
// ...
Return Type Detail