Materi
Satu bentuk data sering dibutuhkan dalam beberapa varian: lengkap saat disimpan, sebagian saat diperbarui, dan terpotong saat ditampilkan. Menulis ulang interface untuk tiap varian membuat ketiganya bisa berbeda diam-diam. Utility type menurunkan varian itu dari satu interface asal, sehingga perubahan di asalnya ikut terbawa.
Partial<T> menghasilkan tipe dengan semua properti T menjadi opsional, cocok untuk fungsi pembaruan yang hanya menerima kolom yang berubah. Pick<T, K> menghasilkan tipe berisi properti yang disebut saja, ditulis sebagai teks dan digabung dengan tanda garis tegak bila lebih dari satu.
interface Produk {
nama: string;
harga: number;
stok: number;
}
type Ubahan = Partial<Produk>; // semua properti opsional
type Ringkas = Pick<Produk, "nama" | "harga">;
function perbarui(p: Produk, ubahan: Ubahan): Produk {
return { ...p, ...ubahan };
}
const baru = perbarui({ nama: "Kopi Gayo", harga: 85000, stok: 2 }, { stok: 5 });Menyebut nama properti yang tidak ada di tipe asal ditolak dengan pesan Type '"hrga"' does not satisfy the constraint, jadi salah ketik nama kolom tertangkap kompiler. Halaman Utility Types memuat pasangan kebalikannya: Required membuat semua properti wajib, dan Omit membuang properti yang disebut alih-alih menyimpannya.