Memastikan Langkah Wajib
Cegah build() dijalankan sebelum semua bidang wajib diatur.
Memastikan Langkah Wajib adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 4 pelajaran total.
Mencegah build() Terlalu Dini
Sekarang kita menggunakan keadaan yang terakumulasi untuk melarang pemanggilan build() sampai bidang wajib ditetapkan. Sistem tipe, bukan pemeriksaan saat program berjalan, yang memblokir build yang tidak lengkap.
Tentukan Bentuk Akhir
Mulailah dengan mendeklarasikan objek lengkap dan kunci mana yang wajib. Pembangun hanya akan mengizinkan build() ketika keadaan mencakup semuanya.
interface Config {
url: string; // required
method: string; // required
timeout?: number; // optional
}
type Required = { url: string; method: string };Signatur build Bersyarat
Kita membuat build tersedia hanya ketika keadaan yang terakumulasi S memperluas kunci wajib. Tipe bersyarat mengembalikan metode yang sebenarnya atau metode yang tidak dapat digunakan.
class Builder<S> {
build(this: Builder<Required>): Config {
return this.d as Config;
}
private d: Record<string, unknown> = {};
}Menggunakan Parameter this
Parameter this: Builder<Required> membatasi instans pembangun mana yang boleh memanggil build. Jika S tidak memenuhi Required, panggilan tersebut menjadi kesalahan tipe.
// Only a Builder whose S includes url and method
// can legally invoke build().Menghubungkan Penyetel dengan Keadaan
Setiap penyetel memperluas S seperti sebelumnya. Setelah kedua penyetel wajib dijalankan, S akhirnya memperluas Required dan build dapat dipanggil.
class Builder<S> {
private d: Record<string, unknown> = {};
url(u: string): Builder<S & { url: string }> { this.d.url = u; return this as any; }
method(m: string): Builder<S & { method: string }> { this.d.method = m; return this as any; }
build(this: Builder<{ url: string; method: string }>): Config { return this.d as Config; }
}Jalur Berhasil Lolos Kompilasi
Ketika kedua langkah wajib tersedia, rangkaian tersebut lolos pemeriksaan tipe dan berjalan. Kompiler yakin bahwa S mencakup setiap kunci wajib.
const cfg = new Builder<{}>().url("/x").method("GET").build();
console.log(cfg.url, cfg.method);Jalur Gagal Menghasilkan Kesalahan
Hilangkan satu langkah wajib dan build() tidak lagi lolos pemeriksaan tipe karena S milik pembangun tidak memperluas Required. Kesalahan tersebut diketahui pada waktu kompilasi.
// const bad = new Builder<{}>().url("/x").build();
// Error: 'build' can only be called when method is set too.Mengapa this Lebih Baik daripada Penjagaan saat Berjalan
if (!this.url) throw saat program berjalan hanya gagal ketika kode dijalankan. Pendekatan parameter this gagal selama pemeriksaan tipe, sehingga build yang tidak lengkap tidak pernah dikirimkan.
Bidang Opsional Tetap Opsional
Langkah opsional seperti timeout tidak pernah menjadi bagian dari Required, sehingga tidak menentukan apakah build() boleh dipanggil. Anda dapat menyertakan atau melewatinya dengan bebas.
const ok = new Builder<{}>().method("PUT").url("/y").build();
console.log("order of required steps does not matter");Menskalakan ke Banyak Persyaratan
Tambahkan lebih banyak kunci wajib ke bentuk Required dan parameter this, lalu kompiler akan menegakkan semuanya. Pola ini dapat digunakan untuk berapa pun jumlah langkah wajib.
Keterbatasan
Jaminan ini bergantung pada penerusan S secara konsisten melalui setiap penyetel dan penggunaan pengetikan parameter this. Konversi tipe harus dibatasi pada penyetel agar pemanggil tetap sepenuhnya aman secara tipe.
Pemeriksaan Singkat
Pemeriksaan singkat tentang pelajaran ini.
Rangkuman
Untuk menegakkan langkah wajib, ketik build dengan parameter this: Builder<Required>. Metode tersebut hanya lolos pemeriksaan tipe setelah keadaan yang terakumulasi S mencakup setiap kunci wajib, sehingga konstruksi yang tidak lengkap berubah menjadi kesalahan kompilasi.
Belajar TypeScript dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 101
- Pelajaran
- 352
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Memastikan Langkah Wajib” gratis?
Ya — teks lengkap “Memastikan Langkah Wajib” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Memastikan Langkah Wajib”?
Cegah build() dijalankan sebelum semua bidang wajib diatur. Kamu berlatih TypeScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai TypeScript Academy?
Tidak diperlukan pengalaman sebelumnya. TypeScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Memastikan Langkah Wajib” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran TypeScript Academy ini?
Ya. Setiap pelajaran TypeScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar Pola Builder
- Antarmuka Fluent dengan Jenis
- Memastikan Langkah Wajib
- Builder yang Tidak Dapat Diubah