type Load<T> =
  | { status: "idle" }
  | { status: "loading" }
  | { status: "success"; data: T }
  | { status: "error"; message: string };
function describe(state: Load<string[]>): string {
  switch (state.status) {
    case "idle": return "尚未查询";
    case "loading": return "查询中";
    case "success": return "共 " + state.data.length + " 项";
    case "error": return state.message;
  }
}
type Lesson = { id: string; minutes: number };
function parseLesson(value: unknown): Lesson {
  if (typeof value !== "object" || value === null ||
      !("id" in value) || typeof value.id !== "string" ||
      !("minutes" in value) || typeof value.minutes !== "number" ||
      !Number.isFinite(value.minutes) || value.minutes < 0) {
    throw new Error("学习记录格式不正确");
  }
  return { id: value.id, minutes: value.minutes };
}
if (parseLesson({ id: "html", minutes: 30 }).minutes !== 30) throw new Error("断言失败");
let rejected = false;
try { parseLesson({ id: "bad", minutes: -1 }); } catch { rejected = true; }
if (!rejected) throw new Error("应拒绝负数");
console.log(describe({ status: "success", data: ["HTML"] }));
export {};
