type RequestState = | { status: "idle" } | { status: "loading" } | { status: "success"; data: T } | { status: "error"; message: string }; function label(state: RequestState): string { switch (state.status) { case "idle": return "Ready"; case "loading": return "Loading…"; case "success": return "Complete"; case "error": return state.message; } }