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