paint-brush
O que é coerção de tipo e conversão de tipo em JavaScript?por@kirmani
6,159 leituras
6,159 leituras

O que é coerção de tipo e conversão de tipo em JavaScript?

por Kirmani4m2023/05/25
Read on Terminal Reader

Muito longo; Para ler

Nas linguagens de programação, os dados são classificados em vários tipos, como inteiros, strings, números de ponto flutuante e booleanos. A capacidade de converter ou coagir dados de um tipo para outro é essencial para executar operações, manipular dados e garantir a compatibilidade e consistência dos dados dentro de um programa. A coerção de tipo refere-se à conversão automática de tipos de dados que ocorre em JavaScript quando diferentes tipos de dados são usados juntos em uma operação.
featured image - O que é coerção de tipo e conversão de tipo em JavaScript?
Kirmani HackerNoon profile picture
0-item
1-item

Coerção de tipo e conversão de tipo são conceitos fundamentais em programação que envolvem a conversão de dados de um tipo para outro. Nas linguagens de programação, os dados são classificados em vários tipos, como inteiros, strings, números de ponto flutuante e booleanos. A capacidade de converter ou coagir dados de um tipo para outro é essencial para executar operações, manipular dados e garantir a compatibilidade e consistência dos dados dentro de um programa.

Tipo de Coerção:

A coerção de tipo refere-se à conversão automática de tipos de dados que ocorre em JavaScript quando diferentes tipos de dados são usados juntos em uma operação. Por exemplo, se um número e uma string forem adicionados, o JavaScript converterá automaticamente o número em uma string para realizar a operação.

 const num = 5; const str = "3"; console.log(num + str); //output: "53"


No exemplo acima, o número 5 é convertido automaticamente na string “5” para que possa ser concatenado com a string “3” para dar a saída “53”. Alguns outros exemplos de coerção de tipo incluem:


  • Usando os operadores == ou != para comparação, que executam coerção de tipo antes de fazer uma comparação
  • Usar o operador unário mais ( + ) antes de um valor executará a coerção de tipo para Number. No entanto, o sinal + só pode aparecer uma vez e não deve ser seguido de espaço em branco.


Por exemplo:

 const x = "5"; const y = +x; console.log(typeof y); // output: number


Muitas vezes, acredita-se que usar o operador unário + no início de um valor em JavaScript é um atalho para a função Number . No entanto, este não é o caso. Tanto o operador + unário quanto a função Number usam o mesmo algoritmo para converter uma string em um número, mas há diferenças sutis.


Por exemplo, enquanto + lançará um TypeError ao encontrar um BigInt , Number() retornará o valor numérico de um BigInt , mas com uma possível perda de precisão. A coerção também ocorre se você usar o operador de negação unário ( - ) antes de uma string da mesma maneira.


  • Usando a instrução if , que forçará um valor para um booleano antes de fazer uma comparação

  • Usando o && , || e ?: operadores, que irão forçar o valor para um booleano antes de executar a operação.


Fundição de tipo:

Por outro lado, a conversão de tipos refere-se à conversão explícita de tipos de dados. Isso é feito usando funções de conversão como Number() , String() , Boolean() e Symbol()

 const str = '5'; const num = Number(str); console.log(num); //output: 5


Neste exemplo, a variável num é do tipo number, mas nós a convertemos explicitamente em uma string usando a função String() . Vamos dar uma olhada em várias funções de conversão de tipo em JavaScript, juntamente com um código de exemplo para demonstrar seu uso:


  • Number() : A função Number() é usada para converter um valor não numérico em um valor numérico. Por exemplo, se você deseja converter um valor de string de “10” em um número, você deve usar a função Number() assim:
 const x = "5"; const y = x+10 const z= Number(x)+10; console.log(y); // output: 510 console.log(z); // output: 15


  • parseInt() : A função parseInt é usada para converter um valor em um inteiro. É diferente de Number() e parseFloat() , pois ignora qualquer valor após decimal. Por exemplo:
 const intValue = parseInt("3.14"); console.log(floatValue); // Output: 3


  • parseFloat() : A função parseFloat() é usada para converter um valor de string em um número de ponto flutuante. É muito semelhante a Number() exceto em alguns casos. Vamos ver o exemplo abaixo para ver como parseFloat() se compara a parseInt() e Number() :
 console.log(parseInt('22.5')); // Output: 22 console.log(parseFloat('22.5')); // Output: 22.5 console.log(Number('22.5')); // Output: 22.5 console.log(parseInt('070')); // Output: 70 console.log(parseFloat('070')); // Output: 70 console.log(Number('070')); // Output: 70 console.log(parseInt('1234blue')); // Output: 1234 console.log(parseFloat('1234blue')); // Output: 1234 console.log(Number('1234blue')); // Output: NaN console.log(parseInt('0xFF')); // Output: 255 console.log(parseFloat('0xFF')); // Output: 0 console.log(Number('0xFF')); // Output: 255 console.log(parseInt("10 20 30")); // 10 console.log(parseFloat("10 20 30")); // 10 console.log(Number("10 20 30")); // NaN


  • String() : A função String() é usada para converter um valor não string em um valor string. Os exemplos abaixo mostram como você pode usar a função String() para converter diferentes tipos de valores em string:
 const num = 10; console.log(String(num)); // "10" const bool = true; console.log(String(bool)); // "true" const obj = {name: "John"}; console.log(String(obj)); // "[object Object]" const arr = [1, 2, 3]; console.log(String(arr)); // "1,2,3" const date = new Date(); console.log(String(date)); // "Sun Jan 29 2023 18:52:01 GMT+0000 (Coordinated Universal Time)"


  • Boolean() : A função Boolean é usada para converter um valor não booleano em um valor booleano. Por exemplo, se você quiser converter um valor numérico de 0 em um booleano, use Boolean() assim:
 let value = 0; console.log(Boolean(value)); // false value = "hello"; console.log(Boolean(value)); // true value = undefined; console.log(Boolean(value)); // false value = {}; console.log(Boolean(value)); // true value = -1; console.log(Boolean(value)); // true


É isso, pessoal. Espero que este artigo tenha ajudado você a entender os meandros da conversão de tipos em JavaScript. Agora você tem uma compreensão sólida de como converter suas variáveis em tipos diferentes explicitamente (conversão de tipo), bem como de como o Javascript faz isso implicitamente (coerção de tipo).


Continue praticando e experimentando essas funções para dominá-las. Não se esqueça de curtir, compartilhar, seguir e comentar qualquer dúvida que possa ter. Codificação feliz!

Dica profissional:

Use comparação de igualdade estrita === em vez de comparação de igualdade abstrata == . Evite depender da coerção de tipo implícita do JavaScript, especialmente em operações aritméticas, e sempre use conversão de tipo quando necessário.


Também publicado aqui.