Files
2nd/Programming & Language/Union Types.md
T

3.9 KiB

id, category, confidence_score, tags, last_reinforced, github_commit
id category confidence_score tags last_reinforced github_commit
P-REINFORCE-AUTO-696914 10_Wiki/💡 Topics/Programming & Language 0.90
auto-reinforced
2026-04-20 [P-Reinforce] Continuous Worker - Union Types

Union Types

📌 한 줄 통찰 (The Karpathy Summary)

Union Types는 TypeScript에서 하나의 값이 여러 타입 중 하나를 가질 수 있음을 나타내는 기능입니다 [1, 2]. 수직선(|) 기호를 사용하여 타입들을 연결하며(예: string | number), any 타입을 사용하는 것보다 타입 안전성을 유지하면서도 유연한 코드를 작성할 수 있게 해줍니다 [1-3]. 집합론적 관점에서는 두 개 이상의 타입 집합을 합친 합집합(Union)으로 기능합니다 [4, 5].

📖 구조화된 지식 (Synthesized Content)

  • 기본 동작과 공통 필드 제약: Union Types로 정의된 변수는 지정된 타입들(A | B) 중 하나의 값을 가질 수 있습니다 [6, 7]. 그러나 이 변수의 속성에 접근할 때, TypeScript는 타입 안전성을 위해 유니온에 속한 모든 타입에 공통으로 존재하는 멤버에만 접근을 허용합니다 [2]. 예를 들어 Bird | Fish 타입의 변수라면, 런타임에 어떤 타입이 들어올지 확실하지 않으므로 두 인터페이스에 모두 정의된 메서드만 호출할 수 있습니다 [2].
  • 타입 좁히기 (Type Narrowing): 특정 타입에만 속한 속성을 읽거나 쓰려면 먼저 변수의 타입을 좁혀야 합니다 [8]. 이를 위해 typeof, instanceof, in 연산자를 사용하거나, 사용자 정의 타입 가드(Custom Type Guards)를 활용하여 코드가 실행되는 분기(흐름) 내에서 정확한 타입을 추론하도록 해야 합니다 [8-10].
  • 식별 가능한 유니온 (Discriminated Unions): Union Types를 더욱 강력하게 만드는 핵심 패턴입니다 [7, 11]. 유니온을 구성하는 각 객체 타입에 리터럴 타입의 공통 식별자 속성(예: kind: 'circle' | 'rectangle')을 선언하여, 이 속성을 비교하는 것만으로 TypeScript가 올바른 타입으로 좁힐 수 있게 돕습니다 [12-14]. 이 패턴은 상태 머신을 모델링하거나 잘못된 상태의 조합을 원천적으로 막을 때 매우 효과적입니다 [15, 16].
  • 완전성 검사 (Exhaustiveness Checking): 식별 가능한 유니온을 switch 문으로 분기 처리할 때, never 타입을 활용해 모든 분기를 안전하게 처리했는지 컴파일러에게 검사받을 수 있습니다 [17-19]. 만약 유니온 타입에 새로운 변형(Variant)이 추가되었는데 switch 문에서 처리하지 않았다면, never 타입 검사에 걸려 컴파일 에러가 발생하므로 누락을 방지할 수 있습니다 [18-20].
  • Type Brands의 대안: 값의 종류가 미리 정해져 있는 상황이라면, 복잡한 Branded Types를 사용하는 것보다 알려진 값들을 Union Types로 구성하는 것이 값의 종류를 정확히 설명하는 데 유리할 수 있습니다 [21, 22].

⚠️ 모순 및 업데이트 (Contradictions & RL Update)

  • 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
  • 정책 변화: Programming & Language 분야의 자동 자산화 수행.

🔗 지식 연결 (Graph)

  • Related Topics: Intersection Types, Discriminated Unions, Type Narrowing, Set Theory
  • Projects/Contexts: TypeScript Type System, State Management
  • Contradictions/Notes: Union Types는 값의 유연성을 보장(A 혹은 B 중 하나 허용)하지만, 객체 속성에 접근할 때는 유니온의 모든 타입에 공통으로 존재하는 속성(교집합 형태)만 접근할 수 있는 엄격함이 있으므로 이를 다룰 때는 항상 타입 좁히기(Type Narrowing)가 선행되어야 합니다 [2, 8].

Last updated: 2026-04-18

  • Raw Source: 00_Raw/2026-04-20/Union Types.md