Learn
← Previous Next →

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