Lewati ke konten utama

F4 · Modul 12

Data di batas sistem

48 langkah singkat, dari mudah sampai tantangan.

  1. Level 1

    Kenal

  2. Level 2

    Paham

  3. Level 3

    Terapkan

  4. Level 4

    Tantangan

  5. Level 5

    Pendalaman

Intinya

  • JSON hanya membawa objek, array, string, angka (double), boolean, dan null; sisanya diubah atau dibuang diam-diam, dan bilangan bulat di atas 2^53 − 1 berubah tanpa galat.
  • Tipe dihapus saat berjalan. as dan type predicate adalah janji yang tidak diperiksa; di batas sistem, mulai dari unknown dan buktikan bentuknya.
  • Parse, don't validate: pengurai mengembalikan nilai bertipe baru yang hanya berisi medan dikenal, atau galat dengan jalur medan. Periksa di setiap batas, sekali.
  • Zod 4 menulis skema sebagai nilai: safeParse, issues dengan path, dan z.infer yang menurunkan tipe; .readonly() dan tes Sama menjaga tipe tetap sama persis dengan tipe kanonik.
  • Server melaporkan masalah sebagai Problem Details (RFC 9457) dan menutup polusi prototipe serta mass assignment dengan menyimpan hanya medan yang dikenal.

Sebelum mulai

±4 jam.

Modul ini memakai materi di bawah. Belum yakin? Ulas dulu bagian yang disebut.

Hasil belajar: menjelaskan apa yang bisa dan tidak bisa dibawa JSON (angka di atas 2^53, tanggal, undefined, BigInt, kunci ganda, __proto__); menunjukkan kenapa JSON.parse(teks) as Laporan tidak memeriksa apa pun karena tipe dihapus saat berjalan; memeriksa data unknown dengan narrowing, type predicate, dan fungsi pengurai yang melaporkan jalur medan; menerapkan prinsip parse, don't validate; menulis skema Zod 4 (objek, z.int, z.enum, z.iso.datetime, .readonly(), strictObject, refine) dan menurunkan tipe darinya dengan z.infer, lalu membuktikan kesamaannya dengan tes tipe; menjelaskan bagaimana pustaka skema menurunkan tipe dari nilai; mengembalikan galat yang bisa dibaca mesin dengan Problem Details (RFC 9457); menutup celah di batas sistem (prototype pollution, mass assignment, ukuran masukan) dan menulis SkemaLaporan + parseLaporan yang menolak laporan-rusak.json dengan jalur yang tepat.

Proyek: Laporan Warung langkah 12: SkemaLaporan (Zod 4) dan parseLaporan(data: unknown): Laporan, dengan z.infer<typeof SkemaLaporan> sama persis dengan Laporan (kontrak proyek §3).

Istilah di modul ini (63)

Ketuk istilah untuk melihat penjelasannya. Di materi, istilah bergaris titik membuka kartu yang sama. Semua istilah course

Bahan modul

Semua kode, latihan, dan data modul ini dalam satu zip, untuk dijalankan di laptop atau Google Colab.

  • 9 berkas latihan + tes
  • 2 berkas data
Lihat isi zip
  • BACA-DULU.txt
  • latihan_f4_12_1.ts
  • latihan_f4_12_2.ts
  • latihan_f4_12_4.ts
  • latihan_f4_12_5.ts
  • latihan_f4_12_7.ts
  • latihan_f4_12_3.ts
  • latihan_f4_12_6.ts
  • latihan_f4_12_8.ts
  • latihan_f4_12_9.ts
  • laporan.json
  • laporan-rusak.json