Conversión de Tipos en JavaScript: Explícita e Implícita

Clase 9 de 55Curso de Fundamentos de JavaScript

Contenido del curso

Introducción a JavaScript

Estructuras de Control y Lógica

Manipulación de Arrays

Programación Orientada a Objetos

Asincronía en JavaScript

Resumen

Comprender cómo JavaScript maneja la conversión de tipos de datos es fundamental para evitar errores inesperados en tu código. La diferencia entre convertir un valor de forma deliberada o dejar que el lenguaje lo haga por ti puede cambiar por completo el resultado de una operación. A continuación se explican ambas formas de type casting con ejemplos prácticos directos.

¿Cómo funciona el type casting explícito en JavaScript?

El type casting explícito ocurre cuando tú, como desarrollador, decides convertir un tipo de dato a otro de manera intencional. JavaScript ofrece funciones integradas para lograrlo.

¿Cómo convertir un string a número entero con parseInt?

Si tienes un string que contiene un valor numérico, puedes transformarlo con parseInt [0:20]. Por ejemplo:

javascript const stringNumber = "42"; const integer = parseInt(stringNumber); console.log(integer); // 42 console.log(typeof integer); // number

El resultado es 42 y el typeof confirma que ahora es de tipo number.

¿Cómo convertir un string a número decimal con parseFloat?

Para valores decimales se utiliza parseFloat [1:05]:

javascript const stringDecimal = "3.14"; const float = parseFloat(stringDecimal); console.log(float); // 3.14 console.log(typeof float); // number

En JavaScript no existe una distinción formal entre enteros y decimales: ambos comparten el tipo de dato number.

¿Se puede convertir de binario a decimal?

Sí. parseInt acepta un segundo argumento que indica la base numérica [1:45]. Para convertir un número binario a decimal basta con pasar 2 como base:

javascript const binary = "1010"; const decimal = parseInt(binary, 2); console.log(decimal); // 10 console.log(typeof decimal); // number

El valor 1010 en binario equivale a 10 en decimal, y el tipo resultante sigue siendo number.

¿Qué es el type casting implícito y por qué sorprende?

Aquí es donde JavaScript muestra su naturaleza de lenguaje débilmente tipado. El type casting implícito significa que el motor del lenguaje convierte tipos de datos automáticamente sin que tú lo solicites [2:30].

¿Por qué "5" + 3 da "53" y no 8?

Cuando un operando es un string y el otro un número, JavaScript convierte el número a string y concatena en lugar de sumar [2:50]:

javascript const sum = "5" + 3; console.log(sum); // "53"

El operador + cumple doble función: suma números y concatena strings. Al detectar un string, JavaScript elige concatenar.

Este comportamiento también se extiende a los booleanos. Al sumar un string con true, el resultado es una concatenación [3:20]:

javascript const sumWithBoolean = "3" + true; console.log(sumWithBoolean); // "3true"

Pero si ambos operandos son numéricos (o un número con un booleano), JavaScript suma [3:55]:

javascript const sumWithNumber = 2 + true; console.log(sumWithNumber); // 3

El valor true se convierte a 1 y false a 0.

¿Cuál es la regla de oro para saber si JavaScript concatena o suma?

Para verificar este patrón se probaron todas las combinaciones posibles entre string, number y boolean [4:30]:

  • String + string → concatena.
  • String + number → concatena.
  • String + boolean → concatena.
  • Number + number → suma.
  • Number + boolean → suma.
  • Boolean + string → concatena.
  • Boolean + number → suma.
  • Boolean + boolean → suma.

La regla es sencilla: si alguno de los operandos es un string, JavaScript concatena. En cualquier otro caso, suma [7:10]. Ese es el truco que necesitas recordar para anticipar el comportamiento del operador +.

Por último, un ejercicio rápido refuerza estos conceptos [8:00]:

javascript const number = '596'; const numberConverted = parseInt(number); console.log(typeof number); // string console.log(typeof numberConverted); // number

El primer valor, al estar entre comillas, es un string. El segundo pasa por una conversión explícita con parseInt y se transforma en number. Cuéntame en los comentarios si ya conocías este comportamiento o si te tomó por sorpresa.