--- id: P-REINFORCE-AI-EXHAUSTIVENESS category: "10_Wiki/πŸ’‘ Topics/AI" confidence_score: 0.99 tags: [TypeScript, Safety, ExhaustivenessCheck, NeverType] last_reinforced: 2026-04-20 --- # [[Exhaustiveness-Checking|Exhaustiveness-Checking]] (망라성 검사) ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "λΉ μ§„ μΌ€μ΄μŠ€κ°€ μ—†λŠ”μ§€ μ»΄νŒŒμΌλŸ¬κ°€ λŒ€μ‹  μ²΄ν¬ν•˜λŠ” μ™„λ²½μ£Όμ˜μžμ˜ 도ꡬ." λͺ¨λ“  κ°€λŠ₯ν•œ νƒ€μž… μ‹œλ‚˜λ¦¬μ˜€λ₯Ό μ²˜λ¦¬ν–ˆμŒμ„ λ…Όλ¦¬μ μœΌλ‘œ 보μž₯ν•˜μ—¬, λ‚˜μ€‘μ— μƒˆλ‘œμš΄ νƒ€μž…μ΄ μΆ”κ°€λ˜μ—ˆμ„ λ•Œ λ°œμƒν•  수 μžˆλŠ” λŸ°νƒ€μž„ μ—λŸ¬λ₯Ό μ›μ²œ λ΄‰μ‡„ν•˜λŠ” 기법이닀. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **The Never Trick**: - νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ `never` νƒ€μž…μ„ ν™œμš©ν•œλ‹€. λͺ¨λ“  쑰건문(if/switch)이 λλ‚œ λ’€ `default` μΌ€μ΄μŠ€μ— `const _check: never = remainValue;`λ₯Ό ν• λ‹Ήν•œλ‹€. - **How it works**: - λ§Œμ•½ μ²˜λ¦¬ν•˜μ§€ μ•Šμ€ νƒ€μž…μ΄ 남아 μžˆλ‹€λ©΄, κ·Έ 값은 `never` νƒ€μž…μ— 할당될 수 μ—†μœΌλ―€λ‘œ 컴파일 μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. - **Value**: - μ½”λ“œ μœ μ§€λ³΄μˆ˜ μ‹œ κ°•λ ₯ν•œ μ•ˆμ „μž₯μΉ˜κ°€ λœλ‹€. 예λ₯Ό λ“€μ–΄ `UserRole`에 'Guest'κ°€ μƒˆλ‘œ μΆ”κ°€λ˜λ©΄, 이λ₯Ό μ²˜λ¦¬ν•˜μ§€ μ•Šμ€ λͺ¨λ“  μŠ€μœ„μΉ˜ λ¬Έμ—μ„œ μ¦‰μ‹œ λΉ¨κ°„ 쀄이 κ·Έμ–΄μ§„λ‹€. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (RL Update) - 망라성 κ²€μ‚¬λŠ” 'λ‹«νžŒ μ‹œμŠ€ν…œ(Closed System)'μ—μ„œλŠ” μ™„λ²½ν•˜μ§€λ§Œ, μ™ΈλΆ€ λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ λ™μ μœΌλ‘œ ν™•μž₯λ˜λŠ” νƒ€μž…μ— λŒ€ν•΄μ„œλŠ” 무λ ₯ν•  수 μžˆλ‹€. μ΄λ•ŒλŠ” `assertNever`와 같은 헬퍼 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ λŸ°νƒ€μž„ μ—λŸ¬λ₯Ό λͺ…μ‹œμ μœΌλ‘œ λ˜μ§€λ„λ‘ 섀계해야 ν•œλ‹€. ## πŸ”— 지식 μ—°κ²° (Graph) - Related: [[Discriminated-Unions|Discriminated-Unions]] , Type-Soundness - Tool: TypeScript Compiler (tsc)