
Khalid simplifies complex modern web development topics into simple words with expertise in Next.js and React.js.

Hello TypeScripters 😊
In this artical you will learn basic and common Typescript Utility types such as Partial<T> Required<T> Pick<T, K> and more. 🔥
Partial<T> – Make All Properties Optional 🤢The Partial<T> utility type takes a type T and makes all its properties optional. This is useful when updating objects where only a subset of properties may be provided.
interface User {
name: string;
age: number;
}
interface PartialUser = Partial<User>
// { name?:string, age?:number }Required<T> – Make All Properties Required 🤷♂️The Required<T> utility type does the opposite of Partial<T> by ensuring that all properties of T are required.
interface User {
name?: string;
age?: number;
}
interface RequiredUser = Required<User>
// { name:string, age:number }Readonly<T> – Make All Properties Read-Only 👏The Readonly<T> utility type prevents properties from being modified after initialization.
interface User {
name: string;
}
const user: Readonly<User> = { name: "Khalid" };
// user.name = "khan"; ❌ Error: Cannot assign to 'name' because it is a read-only property.Pick<T, K> – Select Specific Properties 😁The Pick<T, K> utility type extracts a subset of properties from T.
interface User {
id: number;
name: string;
email: string;
}
interface NewUser = Pick<User, 'id' | 'name'>
// { id: number; name: string; }Omit<T, K> – Remove Specific Properties 😉The Omit<T, K> utility type removes specified properties from T.
interface User {
id: number;
name: string;
email: string;
}
interface UserWithOutEmail = Omit<User, 'email'>
// { id: number; name: string; }Record<K, T> – Define a Key-Value Object Type 🙌The Record<K, T> utility type creates an object type where keys are K and values are T.
type Role = "admin" | "user" | "guest";
interface NewRoles = Record<Role, string>
// { admin: string; user: string; guest: string; }Extract<T, U> – Extract Common Types 🤞The Extract<T, U> utility type extracts types from T that are also present in U.
type Status = "success" | "error" | "pending";
type AllowedStatus = Extract<Status, "success" | "error">
// "success" | "error"Exclude<T, U> – Remove Certain Types 🤔The Exclude<T, U> utility type removes types from T that match U.
type Status = "success" | "error" | "pending";
type NotPending = Exclude<Status, "pending">;
// "success" | "error"Happy Types 😍😍🎉