Reactadvanced
useReducer with a discriminated-union action type
type State =
| { status: "idle" }
| { status: "loading" }
| { status: "success"; data: string[] }
| { status: "error"; error: string };Model a fetch state machine as a discriminated union so an exhaustiveness check fails to compile the moment a reducer case is missing.