이 연습에서는 몇 가지 용어에 대해 설명하겠습니다.

이 예제에는 세 가지 타입이 있습니다.

type A =
	| {
	    type: "a";
			a: string;
		}
	| {
			type: "b";
	    b: string;
		}
   | {
			type: "c";
	    c: string;
		};

type B = "a" | "b" | "c";

enum C = {
	A = "a",
	B = "b",
	C = "c",
}

타입 중 하나는 discriminated 유니온(구별된 유니온), 하나는 enum, 하나는 유니온 입니다.

여러분의 과제는 어느 것이 어떤 타입인지 알아내는 것입니다.

나의 답

// 식별된 유니온
type A =
	| {
	    type: "a";
			a: string;
		}
	| {
			type: "b";
	    b: string;
		}
   | {
			type: "c";
	    c: string;
		};

// 유니온
type B = "a" | "b" | "c";

// enum
enum C = {
	A = "a",
	B = "b",
	C = "c",
}

유니온 용어 예제

정답은 Adiscriminated union 이라는 것입니다.

type A =
  | {
      type: "a"
      a: string
    }
  | {
      type: "b"
      b: string
    }
  | {
      type: "c"
      c: string
    }

B 는 유니온 이지만 discriminated(구별된)는 아닙니다.

type B = "a" | "b" | "c"

C 는 enum 입니다.

enum C {
  a = "a",
  b = "b",
  c = "c"
}

enum(열거형)에 대해서는 나중에 자세히 설명하겠습니다. 지금은 discriminated union과 일반 union의 차이점을 살펴 보겠습니다.