TechLead

Tipos de Datos

Primitivos y objetos

Tipos de Datos en JavaScript

JavaScript tiene dos categorias de tipos de datos: primitivos y objetos. Entender los tipos es fundamental para escribir codigo libre de errores.

Tipos Primitivos

Los primitivos son valores inmutables que no tienen metodos ni propiedades (aunque JS los envuelve temporalmente para acceder a metodos).

String (Cadena de texto)

const saludo = "Hola";
const nombre = 'Mundo';
const plantilla = `${saludo}, ${nombre}!`; // Template literal

Number (Numero)

const entero = 42;
const decimal = 3.14;
const negativo = -10;
const infinito = Infinity;
const noEsNumero = NaN; // Not a Number

Boolean (Booleano)

const verdadero = true;
const falso = false;
const resultado = 10 > 5; // true

undefined

let sinDefinir;
console.log(sinDefinir); // undefined

function sinRetorno() {}
console.log(sinRetorno()); // undefined

null

const vacio = null; // Ausencia intencional de valor
const usuario = null; // Usuario no existe

Symbol (ES6)

const id = Symbol('id');
const otroId = Symbol('id');
console.log(id === otroId); // false - cada Symbol es unico

BigInt (ES2020)

const numeroGrande = 9007199254740991n;
const otroBigInt = BigInt(123456789012345678901234567890);

Verificando Tipos con typeof

console.log(typeof "hola");     // "string"
console.log(typeof 42);         // "number"
console.log(typeof true);       // "boolean"
console.log(typeof undefined);  // "undefined"
console.log(typeof null);       // "object" (bug historico!)
console.log(typeof {});         // "object"
console.log(typeof []);         // "object" (arrays son objetos)
console.log(typeof function(){}); // "function"

Coercion de Tipos

JavaScript automaticamente convierte tipos en ciertas situaciones:

// Coercion de string
console.log("5" + 3);    // "53" (numero a string)
console.log("5" - 3);    // 2 (string a numero)

// Coercion de boolean
console.log(Boolean(""));     // false
console.log(Boolean("hola")); // true
console.log(Boolean(0));      // false
console.log(Boolean(42));     // true

// Valores falsy: false, 0, "", null, undefined, NaN
// Todo lo demas es truthy