1. Partial<T>

interface User {
  name: string;
  age: number;
}

const updateUser = (user: User, updates: Partial<User>) => {
  return { ...user, ...updates };
};

2. Required<T>

interface User {
  name?: string;
  age?: number;
}

const user: Required<User> = { name: "John", age: 25 }; // Error jika ada properti yang tidak ada

3. Readonly<T>

interface User {
  name: string;
  age: number;
}

const user: Readonly<User> = { name: "John", age: 25 };
user.age = 30; // Error karena properti read-only

4. Pick<T, K extends keyof T>

interface User {
  name: string;
  age: number;
  email: string;
}

const userName: Pick<User, 'name'> = { name: "John" }; // Memilih hanya properti 'name'

5. Omit<T, K extends keyof T>

interface User {
  name: string;
  age: number;
  email: string;
}

const userWithoutEmail: Omit<User, 'email'> = { name: "John", age: 25 }; // Tanpa 'email'