Rantaian Pilihan dengan ?.
Akses sifat bersarang secara mendalam dengan selamat apabila nilainya mungkin null.
Rantaian Pilihan dengan ?. ialah pelajaran TypeScript Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran TypeScript Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.
Operator Rantaian Pilihan
Rantaian pilihan (?.) membolehkan anda mengakses sifat dengan selamat pada nilai yang mungkin null atau undefined. Jika nilainya kosong, seluruh ungkapan menghentikan penilaian dan menghasilkan undefined dan bukannya menghasilkan ralat.
type User = { profile?: { bio?: string } };
const u: User = {};
const bio = u.profile?.bio;
console.log(bio); // undefined, no crashPemberhentian Awal pada Nilai Kosong
Apabila operan sebelum ?. ialah null atau undefined, penilaian berhenti serta-merta dan mengembalikan undefined. Selebihnya rantaian tidak pernah dilaksanakan.
const data: { value?: number } | null = null;
console.log(data?.value); // undefined, did not throwMerangkaikan Pelbagai Tahap
Anda boleh meletakkan ?. pada setiap langkah yang tidak pasti dalam akses mendalam. Sebarang pautan kosong menghentikan penilaian seluruh rantaian, lalu melindungi anda daripada ralat “sifat nilai tidak ditakrif tidak boleh dibaca”.
type Company = { ceo?: { contact?: { email?: string } } };
const c: Company = { ceo: {} };
console.log(c.ceo?.contact?.email); // undefinedJenis Hasil Mengandungi Nilai Tidak Ditakrifkan
Oleh sebab rantaian itu boleh menghasilkan undefined, TypeScript menambahkan undefined kepada jenis hasil. Jika jenis sifat ialah string, hasil rantaian ialah string | undefined.
type Settings = { theme?: { name: string } };
const s: Settings = { theme: { name: 'dark' } };
const name = s.theme?.name; // type: string | undefined
console.log(name);Mengendalikan Hasil yang Tidak Ditakrifkan
Memandangkan hasilnya mungkin undefined, biasanya anda perlu memeriksanya atau menyediakan nilai sandaran. Sistem jenis mengingatkan anda supaya mengendalikan kes yang tiada nilainya.
type Settings = { theme?: { name: string } };
const s: Settings = {};
const name = s.theme?.name;
if (name === undefined) console.log('using default');
else console.log(name);Perbandingan dengan Rantaian &&
Sebelum ?. diperkenalkan, pembangun menulis rantaian && yang panjang: a && a.b && a.b.c. Rantaian pilihan menyatakan maksud yang sama dengan jauh lebih ringkas dan mudah dibaca dari atas ke bawah.
type A = { b?: { c?: number } };
const a: A = { b: { c: 5 } };
const oldWay = a && a.b && a.b.c;
const newWay = a?.b?.c;
console.log(oldWay, newWay);Mengapa ?. Lebih Baik daripada &&
Pendekatan && menganggap sebarang nilai palsu (0, '', false) sebagai titik untuk berhenti, dan ini boleh menjadi pepijat. Rantaian pilihan berhenti hanya pada null atau undefined, yang biasanya merupakan perkara yang anda kehendaki.
type Box = { count?: number };
const b: Box = { count: 0 };
console.log(b && b.count); // 0... but && stops on falsy in longer chains
console.log(b?.count); // 0, cleanlyRantaian Pilihan pada Tatasusunan Objek
Rantaian pilihan berfungsi melalui apa-apa akses sifat. Apabila digabungkan dengan akses elemen, ia mencapai tatasusunan objek bersarang dengan selamat.
type Team = { members?: Array<{ name: string }> };
const t: Team = { members: [{ name: 'Ada' }] };
console.log(t.members?.[0]?.name);Pemberhentian Awal Menghentikan Seluruh Ungkapan
Setelah sesuatu rantaian menghentikan penilaian, malah akses sifat yang ditulis selepas rantaian itu (tanpa ?.) turut dilangkau. Seluruh ungkapan dinilai sebagai undefined dengan serta-merta.
type Deep = { a?: { b: { c: number } } };
const d: Deep = {};
// a is undefined, so b.c is never evaluated
console.log(d.a?.b.c); // undefinedRantaian Pilihan dengan Pulangan Fungsi
Anda boleh meneruskan rantaian daripada hasil panggilan fungsi. Jika fungsi itu mengembalikan nilai kosong, akses selepasnya dihentikan dengan selamat.
function findUser(): { name: string } | null {
return null;
}
console.log(findUser()?.name); // undefinedContoh Konfigurasi Praktikal
Rantaian pilihan sangat berguna apabila membaca konfigurasi partial atau respons antara muka pengaturcaraan aplikasi yang medan bersarangnya mungkin tiada. Ia memastikan akses mudah dibaca dan tidak menyebabkan aplikasi ranap.
type Response = { user?: { address?: { city?: string } } };
const res: Response = { user: { address: {} } };
console.log(res.user?.address?.city ?? 'unknown city');Semakan Pantas
Uji pemahaman anda tentang rantaian pilihan.
Imbas Kembali: Rantaian Pilihan
Anda telah mempelajari bahawa ?.:
- Mengakses sifat dengan selamat pada nilai yang mungkin
null/undefined. - Menghentikan penilaian lebih awal bagi seluruh ungkapan kepada
undefinedapabila terdapat pautan kosong. - Menambahkan
undefinedkepada jenis hasil. - Menambah baik rantaian
&&dengan berhenti hanya pada nilai kosong, bukan semua nilai palsu.
Seterusnya, operator penggabungan nilai kosong.
type Cfg = { db?: { host?: string } };
const c: Cfg = {};
console.log(c.db?.host);Pelajari TypeScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 101
- Pelajaran
- 352
Soalan Lazim
Adakah pelajaran “Rantaian Pilihan dengan ?.” percuma?
Ya — teks penuh “Rantaian Pilihan dengan ?.” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus TypeScript Academy, tingkat taraf kepada CoddyKit PRO. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Rantaian Pilihan dengan ?.”?
Akses sifat bersarang secara mendalam dengan selamat apabila nilainya mungkin null. Anda berlatih TypeScript Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan TypeScript Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran TypeScript Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Rantaian Pilihan dengan ?.” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran TypeScript Academy ini?
Ya. Setiap pelajaran TypeScript Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Rantaian Pilihan dengan ?.
- Penggabungan Nullish dengan ??
- Menggabungkan ?. dan ??
- Panggilan Pilihan dan Akses Elemen