Hari 8: Utility Types — Partial, Required, Pick, Omit
65 min
Last updated 09 Apr 2026
Partial — Semua Property Opsional
interface User {
id: number;
nama: string;
email: string;
umur: number;
}
// Partial: semua field jadi optional
type UserUpdate = Partial;
// { id?: number; nama?: string; email?: string; umur?: number }
function updateUser(id: number, perubahan: Partial): void {
console.log(`Update user ${id}:`, perubahan);
}
updateUser(1, { nama: "Budi" }); // OK!
updateUser(2, { email: "x@y.com", umur: 26 }); // OK!
Required & Readonly
// Required: semua jadi wajib (kebalikan Partial)
type UserRequired = Required;
// Readonly: semua jadi tidak bisa diubah
type ImmutableUser = Readonly;
const u: ImmutableUser = { id: 1, nama: "Budi", email: "b@b.com", umur: 25 };
// u.nama = "Sari"; // Error!
Pick & Omit
// Pick: ambil hanya beberapa property
type UserPreview = Pick;
// { id: number; nama: string }
// Omit: buang beberapa property
type UserPublic = Omit;
// { id: number; nama: string }
const preview: UserPreview = { id: 1, nama: "Budi" };
💡
Notice: Utility types adalah "transformasi tipe". Bisa dikombinasikan: Partial<Omit<T, K>> artinya buang K dari T lalu semua jadi opsional.
Assignment
Dari interface Produk {id, nama, harga, stok, deskripsi, kategori}, buat: (1) ProdukRingkas = Pick<> hanya id, nama, harga. (2) ProdukBaru = Omit<> id dan tanpa deskripsi. (3) ProdukUpdate = Partial<Omit<>> tanpa id. Demo penggunaannya.
Expected output:
Ringkas: Laptop - Rp 8,500,000
Baru: Mouse (stok: 50)
Update: harga 8,000,000, stok 8
TS
index.ts
Solution
Output