Tipos primitivos, arrays y objetos (sin dolor)
Tipos primitivos, arrays y objetos sin dolor
Con un puñado de tipos cubres la mayoría del código que vas a escribir: string, number, boolean, arrays y objetos. La clave no es memorizar sintaxis, sino entender cuándo escribir el tipo y cuándo dejar que TypeScript lo deduzca por ti (eso se llama inferencia).
Deja que la inferencia trabaje
Si inicializas una variable con un valor, no necesitas anotar su tipo: TypeScript ya lo sabe. Anotar de más genera ruido. Anota tipos donde el valor todavía no existe, como parámetros de función o estructuras de datos vacías.
// Redundante: TypeScript ya infiere string
const nombre: string = "María";
// Mejor: deja que infiera
const nombre = "María";
// Aquí SÍ conviene anotar, porque empieza vacío
const ids: string[] = [];Objetos, propiedades opcionales y readonly
El operador ? marca una propiedad como opcional. readonly impide reasignarla después de creada. Y as const convierte un valor en un literal inmutable, útil para uniones.
type Usuario = {
id: string;
nombre: string;
plan: "free" | "pro";
bio?: string; // opcional
readonly creadoEn: string; // no se puede reasignar
};
const usuario: Usuario = {
id: "u_123",
nombre: "María",
plan: "free",
creadoEn: "2026-01-01",
};
const usuarios: Usuario[] = [usuario];Consejo
Si ves que escribes el mismo objeto literal en varios sitios, extráelo a un type con nombre. Un buen nombre de tipo documenta tu intención mejor que un comentario.
¿Qué hace as const?
Convierte el valor en un literal de solo lectura. "free" as const tiene tipo "free", no string, lo que permite usarlo en uniones.
¿Cuándo conviene anotar el tipo explícitamente?
Ejercicio práctico
Objetivo: modelar un catálogo de productos tipado y operar sobre él.
- Define el tipo
Productoconid,titulo,precio(number) yetiquetas(array de string). - Agrega una propiedad opcional
descuento. - Crea una lista
Producto[]con tres productos. - Escribe una función que filtre los productos que tienen una etiqueta dada.
- Comprueba con
tsc --noEmitque no hay errores.
Entregable: el archivo .ts con el tipo, la lista y la función de filtrado.
Para recordar
- Deja que TypeScript infiera en variables inicializadas; anota en parámetros y colecciones vacías.
?hace una propiedad opcional;readonlyimpide reasignarla.as constbloquea el valor a su literal exacto.