"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Evitar los peligros de las evaluaciones booleanas imprecisas en JS/TS

Evitar los peligros de las evaluaciones booleanas imprecisas en JS/TS

Publicado el 2024-08-01
Navegar:336

Éviter les pièges des évaluations booléennes imprécises en JS/TS

En el mundo del desarrollo web, a menudo nos enfrentamos a desafíos que a primera vista parecen simples, pero que rápidamente pueden convertirse en acertijos complejos. Recientemente, tuve una experiencia interesante durante un proyecto Angular que me recordó la importancia de la precisión al evaluar condiciones booleanas en TypeScript. Quiero compartir esta lección contigo, esperando que te ayude a evitar los mismos errores.

El contexto del problema.

La situación inicial

En mi proyecto Angular, me enfrenté a una condición que involucraba cuatro variables booleanas. De estos cuatro, dos dependían de datos asincrónicos provenientes del backend a través de observables. El objetivo era simple: la condición sólo debería ser verdadera si estas dos variables específicas fueran falsas.

El planteamiento inicial y sus límites

Al principio opté por un enfoque que me pareció lógico y conciso:

if (terrainPret && arbitreArrive && 
    !equipeLocaleAbsente && !equipeVisiteuseAbsente) {
  // Commencer le match
}

Este enfoque parecía elegante: usar el signo de exclamación (!) era para garantizar que las variables asincrónicas fueran falsas. Sin embargo, rápidamente descubrí que este método ocultaba una trampa sutil.

La trampa de la evaluación booleana

La revelación

El problema apareció cuando me di cuenta de que mi código no se comportaba como se esperaba. Después de investigar más a fondo, me di cuenta de que había pasado por alto un aspecto crucial de la evaluación booleana en TypeScript.

La explicación técnica

En TypeScript, varios valores se consideran "falsos", es decir, se evalúan como falsos en un contexto booleano. Estos valores incluyen:

  • FALSO
  • 0
  • "" (cuerda vacía)
  • nulo
  • indefinido
  • No

En mi caso, las variables asincrónicas podrían no estar definidas antes de recibir un valor del backend. En consecuencia, la condición !equipeLocaleAbsente por ejemplo era verdadera no sólo cuando la variable era falsa, sino también cuando no estaba definida.

La solución: ser explícito

El enfoque corregido

Para resolver este problema, tuve que ser más explícito en mi condición:

if (terrainPret && arbitreArrive && 
    equipeLocaleAbsente === false && equipeVisiteuseAbsente === false) {
  // Commencer le match
}

Este enfoque garantiza que las variables asincrónicas sean específicamente falsas, no simplemente un valor "falso".

Los beneficios de la precisión

Esta solución tiene varias ventajas:

  1. Elimina ambigüedad en la evaluación de condiciones.
  2. Hace que el código sea más legible y más explícito en sus intenciones.
  3. Previene comportamientos inesperados vinculados a la evaluación de valores "falsos".

Conclusión

Esta experiencia me recordó la importancia de la precisión y claridad en el código, especialmente cuando se trabaja con operaciones asincrónicas y evaluaciones booleanas. También destaca la necesidad de comprender los matices del lenguaje que utilizamos.

Declaración de liberación Este artículo se reproduce en: https://dev.to/bassaoudev/eviter-les-pieges-des-evaluaciones-booleennes-imprecises-en-jsts-19hg?1 Si hay alguna infracción, comuníquese con [email protected] para borrarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3