--- id: TS-UNION-001 category: "10_Wiki/πŸ’‘ Topics/AI" confidence_score: 1.0 tags: [typescript, type-system, functional-programming, error-handling] last_reinforced: 2026-04-26 --- # Discriminated Unions (νŒλ³„ κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨) ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "νƒ€μž… κ°€λ“œλ₯Ό μžλ™ν™”ν•˜λŠ” μ˜λ¦¬ν•œ λ¦¬ν„°λŸ΄ νƒœκ·Έ" β€” κ³΅ν†΅λœ 속성(Tag)을 κΈ°μ€€μœΌλ‘œ μ—¬λŸ¬ νƒ€μž…μ„ ν•˜λ‚˜λ‘œ λ¬Άκ³ , μ½”λ“œ λ ˆλ²¨μ—μ„œ μ•ˆμ „ν•˜κ²Œ νŠΉμ • νƒ€μž…μ„ 식별해낼 수 있게 ν•˜λŠ” νƒ€μž… 섀계 기법. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **μΆ”μΆœλœ νŒ¨ν„΄:** μ—¬λŸ¬ 객체 νƒ€μž…μ΄ κ³΅ν†΅μ μœΌλ‘œ κ°€μ§€λŠ” 'νƒœκ·Έ(Literal property)'λ₯Ό μ‚¬μš©ν•˜μ—¬ μ»΄νŒŒμΌλŸ¬κ°€ 쑰건문(`switch`, `if`) λ‚΄μ—μ„œ νƒ€μž…μ„ μ •ν™•νžˆ 쒁힐 수 μžˆλ„λ‘ λ•λŠ” νŒ¨ν„΄. - **μ„ΈλΆ€ λ‚΄μš©:** - **Tag/Kind 속성:** 각 νƒ€μž…μ— κ³ μœ ν•œ λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄ 속성을 λΆ€μ—¬ν•˜μ—¬ κ΅¬λΆ„μ˜ κ·Όκ±°λ₯Ό 마련. - **Exhaustiveness Check:** `switch` λ¬Έμ—μ„œ λͺ¨λ“  κ°€λŠ₯ν•œ μΌ€μ΄μŠ€λ₯Ό μ²˜λ¦¬ν–ˆλŠ”μ§€ TypeScript μ»΄νŒŒμΌλŸ¬κ°€ ν™•μΈν•˜κ²Œ 함. - **Error Handling:** `Success`와 `Failure` νƒ€μž…μ„ μœ λ‹ˆμ˜¨μœΌλ‘œ λ¬Άμ–΄ λŸ°νƒ€μž„ μ—λŸ¬ λŒ€μ‹  컴파일 νƒ€μž„μ— μ˜ˆμ™Έ 처리λ₯Ό κ°•μ œ. - **Pattern Matching:** ν•¨μˆ˜ν˜• μ–Έμ–΄μ˜ νŒ¨ν„΄ λ§€μΉ­κ³Ό μœ μ‚¬ν•œ μ•ˆμ •μ„±μ„ 객체 μ§€ν–₯ ν™˜κ²½μ—μ„œ κ΅¬ν˜„. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** `instanceof`λ‚˜ μž„μ˜μ˜ 속성 체크 기반의 λΆˆμ•ˆμ •ν•œ νƒ€μž… κ°€λ“œμ—μ„œ, λͺ…μ‹œμ μΈ 'νƒœκ·Έ' 기반의 선언적 νƒ€μž… κ°€λ“œλ‘œ ν‘œμ€€ν™”λ¨. - **μ •μ±… λ³€ν™”:** Antigravity μ—μ΄μ „νŠΈμ˜ 톡신 ν”„λ‘œν† μ½œ μ •μ˜ μ‹œ, λ©”μ‹œμ§€ νƒ€μž…μ„ Discriminated Unions둜 μ •μ˜ν•˜μ—¬ νŒŒμ‹± 였λ₯˜λ₯Ό μ›μ²œ 차단함. ## πŸ”— 지식 μ—°κ²° (Graph) - **Parent:** 10_Wiki/πŸ’‘ Topics/AI - **Related:** Type-Guards, Algebraic-Data-Types, [[Exhaustiveness-Checking|Exhaustiveness-Checking]] - **Raw Source:** 10_Wiki/Topics/AI/Discriminated-Unions-for-Error-Handling.md