--- id: P-REINFORCE-AUTO-981211 category: "[[10_Wiki/πŸ’‘ Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[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]] ---