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.
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:
==
ou !=
para comparação, que executam coerção de tipo antes de fazer uma comparação+
) 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.
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!
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.