TypeScript de Cero a Experto / Funciones e interfaces
Reto: un módulo con funciones, callbacks e interface
Junta todo el módulo en una pieza: una interface para el dato, tipos-función para los callbacks, rest de funciones como criterios, y un retorno tipado con precisión. Es el esqueleto de cualquier motor de procesamiento —el tipo de código donde TypeScript brilla porque el compilador vigila cada conexión.
Reto
El procesador de gastos tipado
Qué debes construir
Un mini-motor que filtra gastos con criterios combinables y produce un resumen. Al ejecutarse debe imprimir EXACTAMENTE:
Comida cara: Almuerzo, Mercado
Resumen -> total: 50000, cantidad: 2, promedio: 25000
Requisitos:
interface Gasto:nombre(string),valor(number),categoria(string).type Filtro: un tipo-función(g: Gasto) => boolean.type Resumen: un objeto contotal,cantidadypromedio(todosnumber).filtrar(gastos, ...filtros): recibe los gastos y un número VARIABLE deFiltro(rest), y devuelve solo los gastos que cumplen TODOS los filtros.resumir(gastos): Resumen: calcula total, cantidad y promedio. Anota su retorno comoResumen(contrato explícito). Cuida el caso de lista vacía para no dividir entre cero (aunque aquí no ocurra).- Dos filtros concretos —
esComidayesCaro(valor > 10000)— y el guion que produce la salida.
Reglas
- Anota los bordes (parámetros, y el retorno de
resumir); deja inferir lo interno. - Al usar
filter/map, NO anotes el parámetro del callback (tipado contextual). - Nada de
any. Salida exacta.
25:00
Cuando estés listo, arranca el reloj.
Qué sigue
Módulo 3 cerrado: tipas funciones, interfaces y sabes cuándo usar cada
herramienta. El módulo 4 es, para muchos, el corazón de TypeScript: el NARROWING.
Aprenderás a enseñarle al compilador a razonar sobre tus datos —"si esto es
verdad, entonces x es de tal tipo"— y a modelar estados con las discriminated
unions, el patrón más útil de todo el lenguaje.