Door State Machine
Medium · Records & Maps
A door can be "open", "closed" or "locked". It starts "closed". Allowed transitions:
- open + "close" -> closed
- closed + "open" -> open, closed + "lock" -> locked
- locked + "unlock" -> closed
Any other event is ignored (the state stays the same). Write runDoor(events: DoorEvent[]): DoorState[] that returns the state after each event.
Tip: store the transitions in a table of type Record<DoorState, Partial<Record<DoorEvent, DoorState>>>.
Next: Cart Reducer