Funciones y objetos tipados
Las funciones y los objetos son el núcleo de casi cualquier proyecto JavaScript. Si aquí tipas bien, el resto del código se vuelve mucho más estable.
Tipar parámetros y retorno
function sumar(a: number, b: number): number {
return a + b;
}
Aquí dejas claro:
- qué entra
- qué sale
Si alguien llama sumar('2', 3), TypeScript protestará.
Funciones flecha
const saludar = (nombre: string): string => {
return `Hola, ${nombre}`;
};
La sintaxis cambia, pero la idea es la misma.
Parámetros opcionales
function crearSaludo(nombre: string, apellido?: string) {
return apellido ? `Hola, ${nombre} ${apellido}` : `Hola, ${nombre}`;
}
El ? marca que ese parámetro puede no venir.
Objetos tipados inline
function imprimirUsuario(usuario: { nombre: string; edad: number }) {
return `${usuario.nombre} tiene ${usuario.edad} años`;
}
Esto sirve para ejemplos simples o tipos que solo se usan una vez.
Extraer el tipo para reutilizarlo
type Usuario = {
nombre: string;
edad: number;
activo: boolean;
};
function imprimirUsuario(usuario: Usuario) {
return `${usuario.nombre} tiene ${usuario.edad} años`;
}
Cuando una estructura empieza a repetirse, sácala a un type o interface.
Propiedades opcionales
type Usuario = {
nombre: string;
edad: number;
avatar?: string;
};
avatar puede existir o no. Eso es distinto de decir que siempre existe pero puede valer null.
Valores por defecto
function formatearPrecio(precio: number, moneda: string = 'EUR') {
return `${precio} ${moneda}`;
}
Si hay valor por defecto, el parámetro sigue estando tipado.
Leer bien el contrato
Cuando ves esto:
function guardar(usuario: Usuario): Promise<Usuario> {
// ...
}
ya sabes mucho sin entrar al cuerpo:
- recibe un
Usuario - devuelve una promesa
- esa promesa resuelve en otro
Usuario
Ese es el verdadero valor de TypeScript: menos suposiciones.
En la siguiente lección ampliamos el repertorio con arrays, tuplas y unions.