Máquinas de estados finitos para lógica compleja de UI en TypeScript

Las banderas booleanas son un impuesto. Cada nuevo caso límite añade otro isLoading, hasError, isRetrying, wasSubmitted — y pronto estás manteniendo una docena de booleanos que pueden combinarse en estados que nunca deberían existir. Un formulario que es simultáneamente isLoading y hasError por un intento anterior. Un botón que está disabled por tres razones distintas, ninguna de ellas explícita. Las máquinas de estados finitos (FSMs) eliminan toda esta clase de errores a nivel de tipos.

Aquí tienes un componente de formulario asíncrono típico. Te resulta familiar porque todos lo hemos escrito.