"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 > Por que os protetores de tipo são necessários? Explorando diferentes tipos e seus casos de uso

Por que os protetores de tipo são necessários? Explorando diferentes tipos e seus casos de uso

Publicado em 2024-11-08
Navegar:112

Why Are Type Guards Necessary? Exploring Different Types and Their Use Cases

Por que os protetores de tipo são necessários? Explorando diferentes tipos e seus casos de uso

No TypeScript, protetores de tipo desempenham um papel essencial em tornar a base de código mais confiável e amigável ao desenvolvedor. Eles ajudam a garantir a segurança dos tipos, permitindo que os desenvolvedores restrinjam os tipos, o que ajuda em erros de tempo de execução e torna o código mais fácil de entender e manter.

O que são protetores de tipo?

Protetores de tipo são expressões de funções que realizam verificações de tempo de execução em tipos, garantindo que os valores atendam a critérios específicos antes de serem processados ​​posteriormente. Eles ajudam a manter a segurança do tipo, permitindo que os desenvolvedores lidem com os valores de maneira adequada.

Por que os protetores de tipo são necessários?

Em JavaScript, muitas vezes você encontra valores que podem ter vários tipos, como uma função que retorna uma string ou um número. Sem protetores de tipo, o TypeScript não seria capaz de determinar o tipo exato, levando a possíveis erros de tempo de execução e comportamento incorreto. Os protetores de tipo permitem que você verifique o tipo de um valor em tempo de execução, ajudando o TypeScript a restringir os tipos e fornecer uma verificação de tipo mais precisa.

Tipos comuns de protetores de tipo e seus casos de uso

1. typeof Tipo Guardas

Caso de uso: verificação básica de tipo para tipos primitivos.
Exemplo:

function printValue(value: string | number) {
  if (typeof value === "string") {
    console.log(`String value: ${value.toUpperCase()}`);
  } else {
    console.log(`Number value: ${value.toFixed(2)}`);
  }
}

Explicação: typeof é eficaz com tipos primitivos (string, número, booleano). Ele permite que a função lide com tipos de string e número de maneira diferente.

2. Protetores de tipo personalizado (é palavra-chave)

Caso de uso: para lógica complexa, verificando formas ou interfaces personalizadas.

Exemplo:

 interface Square {
    side: number;
  }
  interface Circle {
    radius: number;
  }

  function isSquare(shape: Square | Circle): shape is Square {
    return (shape as Square).side !== undefined;
  }

  function calculateArea(shape: Square | Circle) {
    if (isSquare(shape)) {
      return shape.side * shape.side;
    } else {
      return Math.PI * shape.radius * shape.radius;
    }
  }

Explicação: proteções de tipo personalizadas permitem definir funções que verificam atributos específicos para determinar o tipo. Aqui, isSquare verifica a presença da propriedade lateral.

3. em protetores de tipo de operador

Caso de uso: Verificando se um objeto possui uma propriedade específica.
Exemplo:

 interface Car {
    drive(): void;
  }
  interface Boat {
    sail(): void;
  }

  function move(vehicle: Car | Boat) {
    if ("drive" in vehicle) {
      vehicle.drive();
    } else {
      vehicle.sail();
    }
  }

Explicação: O operador in verifica a existência de uma propriedade, ajudando o TypeScript a entender o tipo e permitindo acesso aos métodos relevantes.

Conclusão

Os protetores de tipo são um recurso poderoso do TypeScript que permite verificação precisa de tipo, reduz erros e melhora a legibilidade e manutenção do código. Aproveitando typeof, instanceof, protetores de tipo personalizados e o operador in, você pode lidar com tipos complexos com segurança e eficácia em projetos TypeScript.

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/naymhdev/why-are-type-guards-necessary-exploring- Different-Types-and-their-use-cases-2f8e?1 Se houver alguma violação, por favor entre em contato com study_golang@163 .comdelete
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