기본 패턴
ts
type Status = "idle" | "loading" | "success" | "error";설명
- union 타입은 값이 여러 타입 중 하나일 수 있음을 표현합니다. 예를 들어
number | string은 숫자이거나 문자열입니다. - literal 타입은
string전체가 아니라"success"같은 특정 값 하나만 허용하는 타입입니다. - 둘을 결합하면 상태값, 모드, 옵션처럼 가능한 값 집합이 제한된 API를 매우 명확하게 표현할 수 있습니다.
- 이 방식은 문자열을 아무거나 받는 코드보다 안전하며, 자동완성과 오타 방지에도 큰 도움이 됩니다.
- 다만 union을 받는 값은 사용 전에 어떤 경우인지 확인해야 하므로, 다음 단계로 narrowing이 거의 항상 따라옵니다.
짧은 예제
ts
type Theme = "light" | "dark";
function setTheme(theme: Theme) {
console.log(theme);
}
setTheme("light");빠른 정리
| 표현 | 의미 |
|---|---|
number | string | 숫자 또는 문자열 |
"on" | "off" | 두 문자열 중 하나 |
| literal 타입 | 값 자체를 타입으로 사용 |
| 장점 | 오타 방지, 자동완성, 상태 표현 강화 |
| 다음 단계 | 사용 전 narrowing 필요 |
주의할 점
union을 선언했다고 해서 모든 멤버의 메서드를 바로 쓸 수 있는 것은 아닙니다. 공통으로 보장되는 부분만 바로 접근할 수 있고, 나머지는 먼저 경우를 좁혀야 합니다.
참고 링크
1 sources