TypeScript/ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ ์ƒํƒœ ํ‘œ์‹œ ์˜ˆ์ œ

Rainbow๐ŸŒˆCoder 2022. 4. 17. 00:40
728x90
type LoadingState = {
  state: "loading";
};

type SuccessState = {
  state: "success";
  response: {
    body: string;
  };
};

type FailState = {
  state: "fail";
  reason: string;
};

type ResourceLoadState = LoadingState | SuccessState | FailState;

function printLoginState(state: ResourceLoadState) {
  switch (state.state) {
    case "loading":
      console.log("๐Ÿ‘€ loading...");
      break;

    case "success":
      console.log("๐Ÿ˜ƒ loaded");
      break;

    case "fail":
      console.log("๐Ÿ˜ฑ no network");
      break;

    default:
      throw new Error("unknown state:${state}");
  }
}
printLoginState({ state: "loading" }); // ๐Ÿ‘€ loading...
printLoginState({ state: "success", response: { body: "loaded" } }); // ๐Ÿ˜ƒ loaded
printLoginState({ state: "fail", reason: "no network" }); // ๐Ÿ˜ฑ no network
728x90