Complete worked example
typescript
type State = {kind:"idle"} | {kind:"loading";request:number} | {kind:"ready";items:string[]} | {kind:"failed";message:string};
function complete(state: State, request: number, items: string[]): State {
return state.kind === "loading" && state.request === request ? {kind:"ready",items} : state;
}- Reasoning
- The request id checks relevance after the state tag establishes that a request is loading.