Tipos primitivos en TypeScript
En esta clase empezamos a utilizar TypeScript sin instalar nada extraño. Simplemente creando un archivo .ts en un editor como Visual Studio Code, ya obtenemos validaciones, inferencia de tipos y autocompletado avanzado.
De hecho, Visual Studio Code está construido en un 95% con TypeScript, y eso explica por qué el soporte viene prácticamente “de serie”.
TypeScript funciona desde el primer momento
No necesitamos configuración especial para empezar.
Creamos un archivo como:
const nombre = 'midudev'
Sin añadir ningún tipo explícito, TypeScript ya ha inferido que:
- Si usamos
const, el tipo es el literal exacto'midudev' - Si usamos
let, el tipo será más general, es decirstring
A esto se le llama inferencia de tipos.
¿Qué es la inferencia?
TypeScript “adivina” el tipo basándose en el valor asignado.
Ejemplo:
let nombre = 'midudev'
Aquí el tipo es string.
Si intentamos hacer esto:
nombre = 123 // Error: el tipo 'number' no es asignable a 'string'
Obtendremos un error porque el tipo number no es asignable a string.
Lo mismo ocurre con operaciones inválidas:
nombre * 2 // Error
Y gracias a esto, el editor nos ofrece autocompletado inteligente según el tipo detectado.
Tipos primitivos en TypeScript
string
Cadenas de texto normales, template strings e incluso strings vacíos:
let saludo = `Hola ${nombre}`
let vacio = ''
number
Incluye:
- Enteros →
30 - Decimales →
19.99 - Negativos →
-10 - Hexadecimales →
0x09f Infinity
Todos son del tipo number.
boolean
let isActive: boolean
Solo puede aceptar true o false.
null y undefined
Son tipos diferentes.
let valor: undefined
let otro: null
No son intercambiables. Si una variable es undefined, no puede recibir null y viceversa.
Es una distinción importante y una fuente común de errores en JavaScript.
Union Types
¿Y si una variable puede ser más de una cosa?
Ejemplo típico:
let edad: number | null
Aquí edad puede ser:
- Un
number - O
null
Pero nunca un string.
Los union types permiten modelar situaciones reales de forma mucho más precisa.
bigint
Para números extremadamente grandes:
let numeroGrande = 12345678901234567890n
Terminan con n y no son del tipo number, sino bigint.
symbol
Otro tipo primitivo:
let id: symbol = Symbol()
Se utiliza para crear valores únicos.
Diferencia clave: const vs let
Esta parte es fundamental.
const ciudad = 'Madrid'
Aquí el tipo de ciudad no es string, sino literalmente 'Madrid'.
¿Por qué? Porque una constante no puede reasignarse, así que TypeScript usa el tipo más específico posible.
En cambio:
let pais = 'España'
Aquí el tipo es string, porque pais podría cambiar más adelante.
Entender esta diferencia es clave para comprender cómo funciona la inferencia en TypeScript.
¿Por qué esto es tan potente?
Porque:
- El editor te guía mientras escribes
- Reduce errores antes de ejecutar el código
- Mejora el autocompletado
- Ayuda incluso a herramientas de IA a cometer menos errores
Lo que hemos visto
- Inferencia automática de tipos
- Tipos primitivos:
string,number,boolean,null,undefined,bigint,symbol - Union types para variables que pueden ser más de un tipo
- Diferencia entre
constylety cómo afecta a la inferencia
Y todo esto sin configurar nada especial.