في عالم تطوير الويب، غالبًا ما نواجه تحديات تبدو للوهلة الأولى بسيطة، ولكنها يمكن أن تتحول بسرعة إلى ألغاز معقدة. لقد مررت مؤخرًا بتجربة مثيرة للاهتمام خلال مشروع Angular والتي ذكّرتني بأهمية الدقة في تقييم الشروط المنطقية في TypeScript. أريد أن أشارككم هذا الدرس، على أمل أن يساعدك على تجنب نفس المزالق.
في مشروعي Angular، واجهت حالة تتضمن أربعة متغيرات منطقية. من بين هؤلاء الأربعة، اعتمد اثنان على البيانات غير المتزامنة القادمة من الواجهة الخلفية عبر العناصر القابلة للملاحظة. كان الهدف بسيطًا: يجب أن يكون الشرط صحيحًا فقط إذا كان هذان المتغيران المحددان خاطئين.
في البداية، اخترت النهج الذي بدا لي منطقيًا وموجزًا:
if (terrainPret && arbitreArrive && !equipeLocaleAbsente && !equipeVisiteuseAbsente) { // Commencer le match }
بدا هذا الأسلوب أنيقًا: استخدام علامة التعجب (!) كان للتأكد من أن المتغيرات غير المتزامنة كانت خاطئة. ومع ذلك، سرعان ما اكتشفت أن هذه الطريقة تخفي فخًا خفيًا.
ظهرت المشكلة عندما أدركت أن الكود الخاص بي لا يعمل كما هو متوقع. بعد مزيد من التحقيق، أدركت أنني قد أغفلت جانبًا مهمًا من التقييم المنطقي في TypeScript.
في TypeScript، تعتبر العديد من القيم "خطأ"، أي أنه يتم تقييمها على أنها خاطئة في سياق منطقي. وتشمل هذه القيم:
في حالتي، يمكن أن تكون المتغيرات غير المتزامنة غير محددة قبل تلقي قيمة من الواجهة الخلفية. وبالتالي، فإن الشرط !equipLocaleAbsente على سبيل المثال، كان صحيحًا ليس فقط عندما كان المتغير خطأ، ولكن أيضًا عندما كان غير محدد.
لحل هذه المشكلة، كان علي أن أكون أكثر وضوحًا في حالتي:
if (terrainPret && arbitreArrive && equipeLocaleAbsente === false && equipeVisiteuseAbsente === false) { // Commencer le match }
يضمن هذا الأسلوب أن المتغيرات غير المتزامنة خاطئة على وجه التحديد، وليست مجرد قيمة "خاطئة".
هذا الحل له العديد من المزايا:
ذكّرتني هذه التجربة بأهمية الدقة والوضوح في التعليمات البرمجية، خاصة عند العمل مع العمليات غير المتزامنة والتقييمات المنطقية. كما أنه يسلط الضوء على الحاجة إلى فهم الفروق الدقيقة في اللغة التي نستخدمها.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3