Materi
Bagian administrasi Toko Nusantara menyimpan satu berkas pegawai yang dipakai tiga keperluan sekaligus: mencetak baris daftar hadir, menerbitkan daftar nama yang boleh ditempel di papan pengumuman, dan menyimpan perubahan data yang dikirim pegawai lewat formulir. Ketiganya memakai satu interface asal supaya kolomnya tidak pernah berbeda antar-keperluan.
Data gaji dan nomor rekening ikut tersimpan di berkas yang sama, jadi varian yang ditempel di papan pengumuman harus dipotong lewat Pick, bukan lewat penghapusan properti satu per satu. Perubahan gaji menyusun objek baru karena properti gaji ditandai readonly, sehingga angka lama tetap terbaca di berkas asal.
Kiriman formulir sengaja hanya memuat kolom yang berubah. Karena itu fungsi pembaruannya menerima Partial dari interface asal, lalu menimpa data lama dengan sebaran objek. Kolom yang tidak dikirim tetap diambil dari berkas, sehingga hasilnya selalu utuh sesuai interface Pegawai.
// Satu baris berkas pegawai, dan satu kiriman formulir perubahan data.
const berkas = {
nama: "Ani",
kota: "Bandung",
gajiPokok: 4500000,
nomorRekening: "1234567890",
};
const dariFormulir = { kota: "Medan" };