CodeForge

Angular 21 de Cero a Experto / Signals a fondo

Reto: construye tu propio sistema de señales

Reto40 min100 XP

Este es el reto que sella tu comprensión de la reactividad de Angular. Vas a construir tu propio signal, computed y effect —con rastreo automático de dependencias— desde cero, en TypeScript puro. Cuando funcione, no habrá magia en Angular que no entiendas: sabrás exactamente por qué un computed se recalcula, por qué un effect corre, y qué significa "grano fino". Es el sello "construye tu versión" del curso, aplicado al núcleo del framework.

Reto

Un mini-Angular reactivo en 40 líneas

Difícil40 min100 XP(×2 sin mirar la solución)

Qué debes construir

Tres funciones que reproduzcan el comportamiento de las de @angular/core:

  1. signal<T>(inicial) — devuelve una función lectora con .set(v) y .update(fn). Al leerla dentro de un consumidor (computed/effect), registra la dependencia.
  2. computed<T>(fn) — señal derivada de solo lectura que se recalcula cuando cambia cualquier señal que fn lea. Debe funcionar en cascada (un computed que depende de otro).
  3. effect(fn) — ejecuta fn una vez y la re-ejecuta cada vez que cambie alguna señal que haya leído.

Luego, úsalas para modelar "Mi Bolsillo": una señal gastos, un computed total, un computed saldo (presupuesto − total), y un effect que "guarde" el saldo (con console.log). Al modificar gastos, todo debe actualizarse en cascada, solo.

Reglas

  • Rastreo AUTOMÁTICO de dependencias: nada de pasar arrays de dependencias a mano.
  • computed debe soportar cascadas (saldo depende de total, que depende de gastos).
  • Todo en TypeScript, tipado. Nada de librerías.

40:00

Cuando estés listo, arranca el reloj.

Qué sigue

Terminaste el módulo más importante del curso: dominas signals de arriba a abajo, y las construiste desde cero. El próximo módulo pone esa reactividad al servicio de la arquitectura: servicios e inyección de dependenciasinject(), providers, tokens— para compartir estado y lógica entre componentes sin pasarlo de mano en mano. El sistema que hace a Angular tan potente en apps grandes.