Tipos de datos en JavaScript y tipado dinámico | Nicolás Garzón🧠
JavaScript trabaja con valores. Cada valor tiene un tipo que determina qué representa y qué operaciones tienen sentido con él.
Un tipo de dato es una forma de clasificar un valor.
No es lo mismo guardar el número 10 que el texto "10": se parecen al leerlos, pero JavaScript puede tratarlos de manera diferente.
JavaScript
const cantidad = 10;
const texto = "10";
console.log(cantidad + 5);
console.log(texto + 5);
El primer valor es un número y participa en una suma. El segundo es texto, así que + une ambos valores.
En JavaScript, las variables no quedan atadas para siempre a un tipo. El tipo pertenece al valor, no al nombre de la variable.
JavaScript
let resultado = 20;
resultado = "veinte";
resultado = true;
Esto es válido, aunque cambiar de tipo sin una razón clara puede volver el código difícil de entender.
JavaScript tiene dos grupos principales de valores:
Son los valores más simples del lenguaje.
| Tipo | Qué representa | Ejemplo |
|---|
| `string` | Texto | `"Nicolás"` |
| `number` | Números enteros y decimales | `25`, `19.99` |
| `bigint` | Enteros demasiado grandes para `number` | `9007199254740992n` |
| `boolean` | Verdadero o falso | `true`, `false` |
| `undefined` | Un valor todavía no asignado | `let ciudad;` |
| `null` | Ausencia intencional de un valor | `const avatar = null;` |
| `symbol` | Identificador único | `Symbol("id")` |
Los primitivos son inmutables: el valor en sí no puede modificarse.
JavaScript
let mensaje = "Hola";
mensaje = mensaje + " Nicolás";
El texto original "Hola" no fue alterado. JavaScript creó un nuevo texto y la variable pasó a apuntar a él.
Los objetos permiten agrupar y organizar información relacionada.
JavaScript
const usuario = {
nombre: "Nicolás",
edad: 24,
};
Los arrays, las funciones, las fechas, los mapas y muchas otras estructuras también son objetos o se comportan como tipos especializados de objeto.
JavaScript
const tecnologias = ["JavaScript", "TypeScript"];
const saludar = () => "Hola";
const hoy = new Date();
A diferencia de los primitivos, los objetos pueden modificarse internamente.
JavaScript
const usuario = { nombre: "Nicolás" };
usuario.nombre = "Nico";
La variable sigue apuntando al mismo objeto; cambió una propiedad dentro de él.
JavaScript
const nombre = "Nicolás";
const saludo = `Hola, ${nombre}`;
Los backticks permiten insertar valores mediante ${}.
Representa tanto enteros como decimales.
JavaScript
const edad = 24;
const precio = 49.99;
const temperatura = -3;
JavaScript también incluye valores numéricos especiales:
JavaScript
console.log(10 / 0);
console.log("hola" * 2);
NaN significa que el resultado no es un número válido, aunque typeof NaN devuelve "number" por una peculiaridad histórica del lenguaje.
Representa enteros muy grandes.
JavaScript
const poblacionImaginaria = 9_007_199_254_740_992n;
No se puede mezclar directamente con number.
Solo puede ser true o false.
JavaScript
const tienePermiso = true;
const cuentaBloqueada = false;
Se usa para representar decisiones y estados.
Suele aparecer cuando un valor todavía no existe o no fue proporcionado.
JavaScript
let ciudad;
console.log(ciudad);
Representa una ausencia colocada intencionalmente.
JavaScript
const segundoNombre = null;
Aquí el valor no está “olvidado”: se está indicando explícitamente que no existe.
Crea valores únicos, incluso cuando usan la misma descripción.
JavaScript
const primerId = Symbol("id");
const segundoId = Symbol("id");
console.log(primerId === segundoId);
Se utiliza principalmente en APIs y comportamientos avanzados de objetos.
Agrupa valores mediante propiedades.
JavaScript
const producto = {
nombre: "Teclado",
precio: 120_000,
disponible: true,
};
También existen objetos especializados:
JavaScript
const categorias = ["Tecnología", "Hogar"];
const fecha = new Date();
const etiquetas = new Set();
- Qué representa un valor.
- Qué operaciones podemos realizar.
- Cómo se compara y copia.
- Si puede modificarse internamente.
- Qué errores pueden aparecer.
JavaScript
const precio = "100";
const impuesto = 19;
console.log(precio + impuesto);
El código no falla, pero el resultado probablemente no es el esperado. Conocer el tipo permite detectar el problema.
JavaScript
let dato = 10;
dato = "diez";
JavaScript lo permite porque el tipo pertenece al valor.
JavaScript
console.log(typeof []);
Un array es una estructura especializada de objeto.
Ambos representan ausencia, pero normalmente null es intencional y undefined indica que el valor no fue asignado o proporcionado.
JavaScript
console.log(typeof NaN);
NaN pertenece al tipo number, aunque representa un resultado numérico inválido.
- JavaScript trabaja con valores y cada valor tiene un tipo.
- El lenguaje tiene tipado dinámico.
- Existen siete tipos primitivos y el grupo de los objetos.
- Los primitivos son inmutables.
- Los objetos pueden cambiar internamente.
- El tipo de un valor afecta sus operaciones, comparaciones y copias.
- ¿Qué tipo tiene cada valor?
JavaScript
"Hola"
42
42n
false
undefined
null
Symbol("x")
[]
{}
- ¿Por qué este resultado es "105"?
JavaScript
const valor = "10";
console.log(valor + 5);
- ¿Puede cambiar una propiedad de un objeto declarado con const?
JavaScript
const perfil = { nombre: "Ana" };
perfil.nombre = "Laura";
Ver respuestas
- ¿Qué tipo tiene cada valor?
JavaScript
"Hola"
42
42n
false
undefined
null
Symbol("x")
[]
{}
- ¿Por qué este resultado es "105"?
JavaScript
const valor = "10";
console.log(valor + 5);
Porque valor es un string. En este caso, el operador + convierte el número en texto y concatena ambos valores.
-
- ¿Puede cambiar una propiedad de un objeto declarado con const?
Sí.
JavaScript
const perfil = { nombre: "Ana" };
perfil.nombre = "Laura";
const impide reasignar la variable, pero no vuelve inmutable el objeto.
Primitivos, objetos y referencias explica por qué estos dos grupos se copian, comparan y modifican de maneras distintas.