--- id: P-REINFORCE-AUTO-EE02DB category: "[[10_Wiki/πŸ’‘ Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - 식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨ (Discriminated Unions)" --- # [[식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨ (Discriminated Unions)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > 지식 μš”μ•½ 정보 μΆ”μΆœ 쀑... ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **μž‘λ™ 원리와 νƒ€μž… 쒁히기 (Type Narrowing):** νƒœκ·Έλœ μœ λ‹ˆμ˜¨(Tagged Union)이라고도 λΆˆλ¦¬λŠ” 식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨μ€ μ—¬λŸ¬ 데이터 ν˜•νƒœ 쀑 ν•˜λ‚˜λ₯Ό λ¦¬ν„°λŸ΄ νƒ€μž…μ˜ 곡톡 속성(예: `kind`, `type`, `status` λ“±)으둜 κ΅¬λΆ„ν•œλ‹€ [1, 3, 4, 7]. μ»΄νŒŒμΌλŸ¬λŠ” `switch`λ‚˜ `if` 쑰건문 λ“±μ—μ„œ 이 μ‹λ³„μž 속성을 ν™•μΈν•˜μ—¬ ν•΄λ‹Ή 블둝 μ•ˆμ—μ„œ 객체의 νƒ€μž…μ„ μ•ˆμ „ν•˜κ³  μžλ™μ μœΌλ‘œ μ’ν˜€μ£Όλ©°, κ°œλ°œμžλŠ” λ³„λ„μ˜ λŸ°νƒ€μž„ 체크 μ œμ•½ 없이도 μžλ™ μ™„μ„±κ³Ό νƒ€μž… μ•ˆμ „μ„±μ„ κ·ΉλŒ€ν™”ν•  수 μžˆλ‹€ [3, 4, 8, 9]. * **μ™„μ „μ„± 검사 (Exhaustiveness Checking)λ₯Ό ν†΅ν•œ μ² λ²½ λ°©μ–΄:** 이 νŒ¨ν„΄μ˜ κ°€μž₯ κ°•λ ₯ν•œ 이점 쀑 ν•˜λ‚˜λŠ” μ»΄νŒŒμΌλŸ¬κ°€ λͺ¨λ“  κ°€λŠ₯ν•œ μΌ€μ΄μŠ€μ˜ 처리 μ—¬λΆ€λ₯Ό κ²€μ¦ν•˜λŠ” μ™„μ „μ„± 검사 κΈ°λŠ₯이닀 [3, 4, 9, 10]. `never` νƒ€μž…μ„ ν™œμš©ν•΄ κΈ°λ³Έ(default) λΆ„κΈ° 처리λ₯Ό κ΅¬μ„±ν•˜λ©΄, μœ λ‹ˆμ˜¨μ— μƒˆλ‘œμš΄ μƒνƒœ 멀버가 μΆ”κ°€λ˜μ—ˆμœΌλ‚˜ 이λ₯Ό μ²˜λ¦¬ν•˜λŠ” λ‘œμ§μ„ λˆ„λ½ν–ˆμ„ λ•Œ 즉각적인 컴파일 μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚¨λ‹€ [4, 9-11]. μ΄λŠ” μ‹œμŠ€ν…œ ν™•μž₯에 λ”°λ₯Έ μ‚¬μ΄λ“œ μ΄νŽ™νŠΈλ₯Ό μ°¨λ‹¨ν•˜λŠ” μ—„κ²©ν•œ 규율둜 μž‘μš©ν•œλ‹€ [4]. * **잘λͺ»λœ μƒνƒœ ν‘œν˜„μ˜ λ°©μ§€ (Making Invalid States Impossible):** 독립적이고 ν˜Έν™˜ λΆˆκ°€λŠ₯ν•œ ν”„λ‘œνΌν‹°λ“€μ„ λ¬΄λΆ„λ³„ν•˜κ²Œ μ„žμ–΄ μ“°λŠ” 것을 λ°©μ§€ν•˜κ³ , νŠΉμ • μƒνƒœμ—λ§Œ μœ νš¨ν•œ 속성 μ‘°ν•©λ§Œμ„ ν—ˆμš©ν•œλ‹€ [1, 5, 12]. μ΄λŸ¬ν•œ νŠΉμ„± 덕뢄에 API 응닡 처리, λ³΅μž‘ν•œ 폼(Form) 핸듀링, Redux μŠ€νƒ€μΌμ˜ λ¦¬λ“€μ„œ, λΌμš°ν„° μƒνƒœ 관리 λ“± λͺ…ν™•ν•œ μƒνƒœ 전이(State Machine)κ°€ ν•„μš”ν•œ λ‹€μ–‘ν•œ μ‹€μ œ ν™˜κ²½μ—μ„œ μœ νš¨ν•˜μ§€ μ•Šμ€ μƒνƒœκ°€ μ•„μ˜ˆ 생성될 수 없도둝 막아쀀닀 [5, 6, 13, 14]. * **λͺ¨λ²” 사둀와 ν™œμš©μ‹œ 주의점:** 식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨μ„ ꡬ좕할 λ•ŒλŠ” 항상 μ‹λ³„μžλ₯Ό ν¬ν•¨ν•˜κ³  μ‹λ³„μž 속성을 μΌκ΄€λ˜κ²Œ λ¦¬ν„°λŸ΄ νƒ€μž…μœΌλ‘œ μœ μ§€ν•΄μ•Ό ν•œλ‹€ [14, 15]. μ‹λ³„μžλ₯Ό λΉΌλ¨Ήκ±°λ‚˜ 선택적(Optional)으둜 λ§Œλ“œλŠ” 것은 ν”ν•œ μ‹€μˆ˜μ΄λ―€λ‘œ ν”Όν•΄μ•Ό ν•œλ‹€ [16, 17]. λ˜ν•œ μ™ΈλΆ€ λ°μ΄ν„°λ‚˜ μ„€μ • νŒŒμΌμ—μ„œ λ“€μ–΄μ˜€λŠ” 값에 λŒ€μ‘ν•  λ•ŒλŠ” 컴파일 νƒ€μž„ κ²€μ‚¬μ—λ§Œ μ˜μ‘΄ν•  수 μ—†μœΌλ―€λ‘œ Zod λ“±κ³Ό 같은 λŸ°νƒ€μž„ 검증 λΌμ΄λΈŒλŸ¬λ¦¬μ™€ κ²°ν•©ν•΄ λ°©μ–΄λ ₯을 λ†’μ΄λŠ” 것이 μ’‹λ‹€ [8, 18, 19]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[μœ λ‹ˆμ˜¨ νƒ€μž… (Union Types)]], [[νƒ€μž… 쒁히기 (Type Narrowing)]], [[μ™„μ „μ„± 검사 (Exhaustiveness Checking)]], [[넀버 νƒ€μž… (never type)]] - **Projects/Contexts:** [[μƒνƒœ λ¨Έμ‹  (State Machine) λͺ¨λΈλ§ 및 Redux μ•‘μ…˜/λ¦¬λ“€μ„œ 섀계]], [[API 응닡 및 μ—λŸ¬ 핸듀링 μ•„ν‚€ν…μ²˜]] - **Contradictions/Notes:** μ†ŒμŠ€μ— λ”°λ₯΄λ©΄ 식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨μ€ λŸ°νƒ€μž„ μ˜€λ²„ν—€λ“œκ°€ μ „ν˜€ μ—†λŠ” κ°•λ ₯ν•œ 컴파일 νƒ€μž„ κΈ°λŠ₯μ΄μ§€λ§Œ, λ„ˆλ¬΄ 깊게 μ€‘μ²©λœ(Deep nesting) 식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨μ„ λ‚¨μš©ν•  경우 μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό 읽기 μ–΄λ ΅κ²Œ λ§Œλ“€κ³  κ±°λŒ€ν•œ μœ λ‹ˆμ˜¨ νƒ€μž…μœΌλ‘œ 인해 TypeScript 컴파일 속도가 μ €ν•˜λ  수 μžˆλ‹€λŠ” 단점이 μžˆλ‹€ [20]. --- *Last updated: 2026-04-18* - Raw Source: [[00_Raw/2026-04-20/식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨ (Discriminated Unions).md]] ---