이 연습에서는 몇 가지 용어에 대해 설명하겠습니다.
이 예제에는 세 가지 타입이 있습니다.
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",
}
정답은 A
가 discriminated 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의 차이점을 살펴 보겠습니다.