"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Evitando as armadilhas de avaliações booleanas imprecisas em JS/TS

Evitando as armadilhas de avaliações booleanas imprecisas em JS/TS

Publicado em 01/08/2024
Navegar:662

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

No mundo do desenvolvimento web, muitas vezes nos deparamos com desafios que à primeira vista parecem simples, mas que podem rapidamente se transformar em quebra-cabeças complexos. Recentemente, tive uma experiência interessante durante um projeto Angular que me lembrou da importância da precisão na avaliação de condições booleanas no TypeScript. Quero compartilhar esta lição com você, esperando que ela o ajude a evitar as mesmas armadilhas.

O contexto do problema

A situação inicial

Em meu projeto Angular, me deparei com uma condição que envolvia quatro variáveis ​​booleanas. Destes quatro, dois dependiam de dados assíncronos vindos do backend por meio de observáveis. O objetivo era simples: a condição só deveria ser verdadeira se essas duas variáveis ​​específicas fossem falsas.

A abordagem inicial e seus limites

Inicialmente, optei por uma abordagem que me pareceu lógica e concisa:

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

Essa abordagem parecia elegante: usar o ponto de exclamação (!) era para garantir que as variáveis ​​assíncronas fossem falsas. No entanto, descobri rapidamente que esse método escondia uma armadilha sutil.

A armadilha da avaliação booleana

A revelação

O problema apareceu quando percebi que meu código não estava se comportando conforme o esperado. Após uma investigação mais aprofundada, percebi que havia esquecido um aspecto crucial da avaliação booleana no TypeScript.

A explicação técnica

No TypeScript, vários valores são considerados "falsos", ou seja, são avaliados como falsos em um contexto booleano. Esses valores incluem:

  • falso
  • 0
  • "" (string vazia)
  • nulo
  • indefinido
  • Não

No meu caso, variáveis ​​assíncronas podem ser indefinidas antes de receber um valor do backend. Consequentemente, a condição !equipeLocaleAbsente por exemplo era verdadeira não apenas quando a variável era falsa, mas também quando era indefinida.

A solução: seja explícito

A abordagem corrigida

Para resolver esse problema, tive que ser mais explícito na minha condição:

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

Essa abordagem garante que variáveis ​​assíncronas sejam especificamente falsas, e não simplesmente um valor "falso".

Os benefícios da precisão

Esta solução tem diversas vantagens:

  1. Elimina a ambiguidade na avaliação das condições.
  2. Torna o código mais legível e mais explícito em suas intenções.
  3. Evita comportamentos inesperados ligados à avaliação de valores "falsos".

Conclusão

Essa experiência me lembrou da importância da precisão e clareza no código, especialmente ao trabalhar com operações assíncronas e avaliações booleanas. Também destaca a necessidade de compreender as nuances da linguagem que usamos.

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/bassaoudev/eviter-les-pieges-des-evaluations-booleennes-imprecises-en-jsts-19hg?1 Se houver alguma infração, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3