¿JavaScript no tiene tipos? Vamos a ver qué dice la especificación…
Una de las frases más comunes entre quienes comienzan a aprender JavaScript (o incluso entre programadores con experiencia en otros lenguajes) es:
“JavaScript no tiene tipos”.
Sin embargo, esta afirmación es inexacta. En esta entrada te explico por qué JavaScript sí tiene tipos, qué significa eso según la especificación oficial (ECMAScript), y cómo entenderlo correctamente puede ayudarte a escribir mejor código.
📖 ¿Qué dice la especificación ECMAScript?
Según la especificación de ECMAScript, los tipos de lenguaje en JavaScript son:
The ECMAScript language types are Undefined, Null, Boolean, String, Symbol, Number, BigInt, and Object.
Estos tipos corresponden a los valores que un programa puede manipular directamente. Es decir, los tipos existen, pero son propiedad de los valores, no de las variables.
🔍 Entonces… ¿Qué es un tipo?
Un tipo de dato es un conjunto de características nativas que identifican cómo se comporta un valor en tiempo de ejecución.
Esto incluye:
- Cómo se puede operar con ese valor.
- Cómo responde a conversiones implícitas o explícitas.
- Cómo lo trata el motor de JavaScript internamente.
💡 Los valores son el foco
A diferencia de lenguajes como Java o C#, en JavaScript las variables no tienen tipos.
Los valores tienen tipos.
Por eso, no preguntamos:
// ❌ Incorrecto
// ¿Qué tipo de datos es la variable x?
Sino:
// ✅ Correcto
// ¿Qué tipo de datos tiene el valor que contiene la variable x?
Podemos verificar esto con el operador typeof:
let x = 42;
console.log(typeof x); // "number"
x = "Hola mundo";
console.log(typeof x); // "string"
La variable x cambió de contener un número a una cadena, pero JavaScript no se queja, porque lo que importa no es el tipo de la variable, sino el tipo del valor actual que almacena.
🧪 Ejemplos prácticos
let valor;
console.log(typeof valor); // "undefined"
valor = null;
console.log(typeof valor); // "object" ← curiosidad histórica
valor = true;
console.log(typeof valor); // "boolean"
valor = 123;
console.log(typeof valor); // "number"
valor = "Texto";
console.log(typeof valor); // "string"
valor = Symbol("id");
console.log(typeof valor); // "symbol"
valor = 10n;
console.log(typeof valor); // "bigint"
valor = { nombre: "Ana" };
console.log(typeof valor); // "object"
📌 Conclusión
JavaScript sí tiene tipos, pero están asociados a los valores y no a las variables.
Esta diferencia es crucial para entender la flexibilidad (y también las trampas) del lenguaje. Al comprender cómo funcionan los tipos en JavaScript, podrás:
- Evitar errores difíciles de rastrear.
- Escribir código más limpio y legible.
- Sacar mejor provecho de herramientas como TypeScript.
🔗 Recursos recomendados
- 📘 Especificación ECMAScript (ECMA-262)
- 📚 MDN Web Docs: JavaScript data types and data structures
- 🧠 JavaScript.info – Data Types
Deja un comentario