4.7 KiB
4.7 KiB
id, category, confidence_score, tags, last_reinforced, github_commit
| id | category | confidence_score | tags | last_reinforced | github_commit | |
|---|---|---|---|---|---|---|
| P-REINFORCE-AUTO-981211 | 10_Wiki/💡 Topics/Programming & Language | 0.90 |
|
2026-04-20 | [P-Reinforce] Continuous Worker - 유니온 타입(Union Types) |
유니온 타입(Union Types)
📌 한 줄 통찰 (The Karpathy Summary)
유니온 타입(Union Types)은 값이 여러 가지 지정된 타입 중 하나일 수 있음을 나타내는 TypeScript의 핵심 타입 기능입니다 [1, 2]. 수직선 기호(
|)를 사용하여 각 타입을 구분하며(예:number | string), 함수 매개변수나 변수가 다양한 형태의 데이터를 수용해야 할 때 유용하게 쓰입니다 [1, 3]. 유니온 타입은 여러 데이터 타입의 가능성을 열어두면서도,any타입을 사용하는 것보다 훨씬 더 엄격한 타입 안정성을 제공합니다 [1].
📖 구조화된 지식 (Synthesized Content)
- 유니온 타입의 기본 동작과 한계:
유니온 타입으로 선언된 변수는 조합된 타입 중 어느 하나의 값을 가질 수 있는 유연성을 제공합니다 [2]. 그러나 유니온 타입 값의 멤버(속성이나 메서드)에 접근할 때는, 조합된 모든 타입에 공통으로 존재하는 멤버에만 접근할 수 있다는 제약이 있습니다 [1]. 예를 들어
Bird | Fish타입의 경우, 두 타입 모두에 존재하는 공통 멤버만 호출 시 컴파일러에서 에러를 뱉지 않습니다 [1]. - 타입 좁히기(Type Narrowing):
공통되지 않은 특정 타입 전용 속성을 안전하게 사용하려면 타입을 좁혀야 합니다 [4, 5].
typeof,instanceof연산자,in연산자, 혹은 사용자 정의 타입 가드(Type Guards) 등을 활용하여 런타임 전에 유니온 타입을 특정한 단일 타입으로 좁혀 데이터에 접근할 수 있습니다 [4, 6, 7]. - 식별 가능한 유니온(Discriminated Unions / Tagged Unions):
객체 형태의 유니온에서 가장 강력하게 쓰이는 패턴입니다 [8, 9]. 조합된 객체 타입들에 공통된 리터럴 속성(예:
kind,type,status)을 식별자(Discriminant)로 추가하여, 서로 다른 데이터 구조를 구분합니다 [10-13]. 이를 통해switch나if구문에서 제어 흐름 분석을 적용해 타입을 자동으로 좁힐 수 있으며, 불가능하거나 유효하지 않은 상태를 원천적으로 차단합니다 [10, 12, 14, 15]. - 완전성 검사(Exhaustiveness Checking):
식별 가능한 유니온을 처리할 때
never타입을 활용해 처리되지 않은 누락 케이스가 없는지 컴파일러가 확인하도록 설정할 수 있습니다 [10, 13, 16-18]. 기존 유니온에 새로운 타입 멤버가 추가되었는데 분기 처리 로직이 업데이트되지 않았다면 즉시 컴파일 에러를 발생시켜, 예기치 않은 버그와 런타임 에러를 방지합니다 [13, 14, 18]. - 적용 사례와 장점: 유니온 타입은 논리적인 "OR" 관계를 모델링하므로, 단일 데이터가 다양한 폼을 가질 수 있는 API 응답 객체 처리, 라우터 상태 모델링, Redux와 같은 복잡한 상태 관리(Action 및 Reducers) 등에 최적화되어 있습니다 [14, 19-21]. 명시적이고 문서화된 구조를 통해 뛰어난 코드 자동완성과 테스트 편의성을 제공합니다 [22].
⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- 정책 변화: Programming & Language 분야의 자동 자산화 수행.
🔗 지식 연결 (Graph)
- Related Topics: Intersection Types(교집합 타입), Discriminated Unions(식별 가능한 유니온), Type Narrowing(타입 좁히기), never 타입
- Projects/Contexts: React State Management(리액트 상태 관리), API Response Handling(API 응답 처리), Redux Reducers(리덕스 리듀서)
- Contradictions/Notes: TypeScript에서 값을 다형적으로 수용할 수 있게 해준다는 점에서는
any타입과 비슷해 보일 수 있으나,any는 모든 타입 체킹 제약이 풀려버리는 반면, 유니온 타입은 오직 정의된 타입들 사이에서의 가능성만 허용하기 때문에 코드의 타입 안전성을 강력하게 유지합니다 [1, 23]. 또한 값이 명확히 정해진 세트 중 하나임을 알 수 있는 경우, 별도의 클래스 계층구조나any를 사용하는 것보다 유니온 타입을 사용하는 것이 훨씬 적합합니다 [1, 23, 24].
Last updated: 2026-04-18
- Raw Source: 00_Raw/2026-04-20/유니온 타입(Union Types).md