Javascript Avanzado II

¿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 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

+

Deja un comentario