Dalam dunia pembangunan web, kita sering berhadapan dengan cabaran yang pada pandangan pertama nampak mudah, tetapi boleh bertukar menjadi teka-teki yang rumit dengan cepat. Baru-baru ini, saya mempunyai pengalaman menarik semasa projek Angular yang mengingatkan saya tentang kepentingan ketepatan dalam menilai keadaan Boolean dalam TypeScript. Saya ingin berkongsi pelajaran ini dengan anda, berharap ia dapat membantu anda mengelakkan perangkap yang sama.
Dalam projek Angular saya, saya berhadapan dengan keadaan yang melibatkan empat pembolehubah Boolean. Daripada empat ini, dua bergantung pada data tak segerak yang datang dari bahagian belakang melalui pemerhatian. Matlamatnya adalah mudah: syarat hanya sepatutnya benar jika dua pembolehubah khusus ini adalah palsu.
Pada mulanya, saya memilih pendekatan yang kelihatan logik dan ringkas bagi saya:
if (terrainPret && arbitreArrive && !equipeLocaleAbsente && !equipeVisiteuseAbsente) { // Commencer le match }
Pendekatan ini kelihatan elegan: menggunakan tanda seru (!) adalah untuk memastikan pembolehubah tak segerak adalah palsu. Walau bagaimanapun, saya dengan cepat mendapati bahawa kaedah ini menyembunyikan perangkap halus.
Masalah muncul apabila saya menyedari bahawa kod saya tidak berfungsi seperti yang diharapkan. Selepas penyiasatan, saya menyedari bahawa saya telah terlepas pandang aspek penting penilaian Boolean dalam TypeScript.
Dalam TypeScript, beberapa nilai dianggap "palsu", iaitu, nilai tersebut dinilai sebagai palsu dalam konteks Boolean. Nilai ini termasuk:
Dalam kes saya, pembolehubah tak segerak boleh tidak ditentukan sebelum menerima nilai dari bahagian belakang. Akibatnya, syarat !equipeLocaleAbsente misalnya adalah benar bukan sahaja apabila pembolehubah itu palsu, tetapi juga apabila ia tidak ditentukan.
Untuk menyelesaikan masalah ini, saya harus lebih jelas dalam keadaan saya:
if (terrainPret && arbitreArrive && equipeLocaleAbsente === false && equipeVisiteuseAbsente === false) { // Commencer le match }
Pendekatan ini memastikan pembolehubah tak segerak adalah palsu secara khusus, bukan sekadar nilai "palsu".
Penyelesaian ini mempunyai beberapa kelebihan:
Pengalaman ini mengingatkan saya tentang kepentingan ketepatan dan kejelasan dalam kod, terutamanya apabila bekerja dengan operasi tak segerak dan penilaian Boolean. Ia juga menyerlahkan keperluan untuk memahami nuansa bahasa yang kami gunakan.
Atas ialah kandungan terperinci Mengelakkan perangkap penilaian Boolean yang tidak tepat dalam JS/TS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!