Módulo 2 · Fundamentos de Programación

Tipos de datos

Números, textos, booleanos, arrays y objetos: qué tipos de datos existen, en qué se diferencian y por qué confundirlos provoca errores silenciosos en tu código.

Definición rápida

Un tipo de dato define qué clase de valor guarda una variable y qué operaciones tienen sentido con él: número, texto, booleano, lista u objeto.

Un tipo de dato indica qué clase de valor guarda una variable y, sobre todo, qué operaciones tienen sentido con ese valor. Sumar dos números tiene sentido; sumar dos nombres de persona no. Casi todos los errores raros de los primeros programas —resultados como "55" o NaN— son confusiones de tipo.

Los cinco tipos que usarás cada día

const edad = 34;                     // number
const nombre = "Ana";                // string
const esMayorDeEdad = true;          // boolean
const notas = [7, 8, 9];             // array
const alumno = { nombre: "Ana" };    // object
  • number: enteros y decimales, sin distinción. 3, -12, 0.5.
  • string: texto entre comillas. "Ana", "7" (esto es texto, no número).
  • boolean: solo true o false. Es la base de los condicionales.
  • array: una lista ordenada de valores accesibles por posición. Ver arrays.
  • object: un conjunto de propiedades con nombre. Ver objetos.

A eso se añaden dos valores que representan ausencia: undefined (una variable declarada sin valor, o una propiedad que no existe) y null (un vacío puesto a propósito por ti).

El error de tipos que comete todo el mundo

const a = 5;
const b = "5";

console.log(a + b);          // "55"  → concatenó texto
console.log(a + Number(b));  // 10    → suma correcta
console.log(a * b);          // 25    → aquí sí convirtió a número

JavaScript intenta «ayudarte» convirtiendo tipos por su cuenta, y con + la conversión va hacia el texto. El síntoma clásico aparece con datos que vienen de un formulario o de una API: parecen números pero son cadenas.

La otra cara del problema es NaN (Not a Number), que aparece cuando pides una operación numérica imposible:

console.log(Number("hola"));   // NaN
console.log(10 / "dos");       // NaN

Si ves NaN en tu salida, busca hacia atrás el punto donde un texto entró donde debía haber un número.

Cómo saber qué tipo tienes delante

typeof 42;            // "number"
typeof "42";          // "string"
typeof true;          // "boolean"
typeof undefined;     // "undefined"
typeof { a: 1 };      // "object"
typeof [1, 2, 3];     // "object"  ← cuidado
Array.isArray([1, 2]) // true      ← esta es la forma correcta

Cuando un ejercicio falla sin motivo aparente, un console.log(typeof valor) bien puesto suele resolver el misterio en diez segundos.

Convertir de un tipo a otro

Number("3.5");      // 3.5
Number("");         // 0
parseInt("12px");   // 12   (se queda con el número inicial)
String(42);         // "42"
Boolean(0);         // false

Presta atención a Number(""), que devuelve 0: un campo vacío puede colarse como un cero perfectamente válido y descuadrar un total sin que salte ningún error.

Por qué esto importa aunque el lenguaje sea flexible

JavaScript no te obliga a declarar tipos, pero los tipos existen igual. La diferencia es que los errores no aparecen al escribir, sino en ejecución y a veces solo con ciertos datos. Trabajar con conciencia de tipos —validar lo que entra, convertir en el borde y no en medio del cálculo— es el hábito que evita esa clase de fallos.

Cómo se practica esto en el curso

El módulo 2 introduce números, textos y booleanos con console.log, y los primeros ejercicios autocorregibles ya obligan a manejar tipos con cuidado: calcular una propina, un total con IVA o un promedio ponderado. Los tests comprueban el tipo exacto del valor devuelto, así que un "10" en lugar de 10 no cuela. Es gratis: mira el temario para ver la secuencia completa.

Preguntas frecuentes

¿Cuántos tipos de datos hay en JavaScript?

Los que usarás a diario son cinco: number, string, boolean, array y object. Existen otros (undefined, null, symbol, bigint), pero al empezar solo necesitas reconocer undefined y null como ausencia de valor.

¿Por qué 5 + "5" da "55"?

Porque uno de los operandos es texto y JavaScript convierte el número a texto para concatenar. Es el error de tipos más habitual: convierte el texto a número con Number(valor) antes de sumar.

¿Cómo compruebo de qué tipo es un valor?

Con typeof valor. Ojo con los arrays: typeof devuelve object para ellos, así que para arrays se usa Array.isArray(valor).