--- id: P-REINFORCE-AUTO-5297D4 category: "10_Wiki/πŸ’‘ Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - never νƒ€μž…" --- # [[never ᄐᅑ압|never νƒ€μž…]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > `never` νƒ€μž…μ€ TypeScriptμ—μ„œ κ²°μ½” λ°œμƒν•  수 μ—†λŠ” κ°’μ΄λ‚˜ μ™„λ£Œλ˜μ§€ μ•ŠλŠ” μƒνƒœλ₯Ό μ˜λ―Έν•˜λŠ” νƒ€μž…μ΄λ‹€ [1, 2]. 주둜 λ¬΄ν•œ λ£¨ν”„λ‚˜ μ˜ˆμ™Έλ₯Ό λ˜μ§€λŠ” ν•¨μˆ˜μ˜ λ°˜ν™˜ νƒ€μž…μœΌλ‘œ 쓰이며, μ§‘ν•©λ‘ μ μœΌλ‘œ '빈 μ§‘ν•©'을 λ‚˜νƒ€λ‚΄μ–΄ 컴파일러의 μ™„μ „μ„± 검사(Exhaustiveness checking) 및 μ—„κ²©ν•œ νƒ€μž… ν†΅μ œλ₯Ό κ΅¬ν˜„ν•˜λŠ” 데 ν•΅μ‹¬μ μœΌλ‘œ μ‚¬μš©λœλ‹€ [3, 4]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **집합둠적 μ˜λ―Έμ™€ λ™μž‘ 원리:** TypeScript νƒ€μž… μ‹œμŠ€ν…œμ„ μ§‘ν•©μœΌλ‘œ μ ‘κ·Όν•  λ•Œ, `never`λŠ” μ–΄λ– ν•œ μš”μ†Œλ„ κ°€μ§€μ§€ μ•ŠλŠ” '빈 μ§‘ν•©(βˆ…)'을 μ˜λ―Έν•œλ‹€ [3, 5]. 빈 집합은 λͺ¨λ“  μ§‘ν•©μ˜ λΆ€λΆ„μ§‘ν•©μ΄λ―€λ‘œ `never` νƒ€μž…μ€ λͺ¨λ“  νƒ€μž…μ— 할당될 수 μžˆλ‹€(즉, `never extends T`λŠ” 항상 참이닀) [6]. ν•˜μ§€λ§Œ λ°˜λŒ€λ‘œ `never` μžμ‹ μ„ μ œμ™Έν•œ μ–΄λ–€ νƒ€μž…λ„ `never`에 할당될 수 μ—†λ‹€ [6]. μœ λ‹ˆμ˜¨ νƒ€μž… 및 ꡐ집합 μ—°μ‚°μ—μ„œλŠ” `A & never = never`, `A | never = A`의 κ²°κ³Όλ₯Ό μ‚°μΆœν•œλ‹€ [3, 7]. - **μ™„μ „μ„± 검사 (Exhaustiveness Checking):** 식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨(Discriminated Unions)을 ν™œμš©ν•  λ•Œ, switchλ¬Έ λ“±μ—μ„œ λͺ¨λ“  λΆ„κΈ°λ₯Ό μ²˜λ¦¬ν–ˆλŠ”μ§€ 컴파일 νƒ€μž„μ— κ°•μ œν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€ [4, 8]. λͺ¨λ“  μœ νš¨ν•œ μΌ€μ΄μŠ€λ₯Ό κ±ΈλŸ¬λ‚΄κ³  남은 κΈ°λ³Έ(default) μƒνƒœλ₯Ό `never` νƒ€μž… λ³€μˆ˜μ— ν• λ‹Ήν•˜λ„λ‘ κ΅¬μ„±ν•˜λ©΄, μΆ”ν›„ μœ λ‹ˆμ˜¨μ— μƒˆλ‘œμš΄ νƒ€μž…μ΄ μΆ”κ°€λ˜μ—ˆμ„ λ•Œ μ²˜λ¦¬ν•˜μ§€ μ•Šμ€ μΌ€μ΄μŠ€κ°€ μžˆλ‹€λ©΄ 컴파일 μ—λŸ¬λ₯Ό λ°œμƒμ‹œμΌœ μ•ˆμ „μ„±μ„ 보μž₯ν•œλ‹€ [4, 9]. - **초과 속성 차단 및 배타적 속성 관리:** 객체 ν• λ‹Ή μ‹œ 예기치 μ•Šμ€ μž‰μ—¬ 속성을 μž‘μ•„λ‚΄κΈ° μœ„ν•΄ νŠΉμ • 속성을 `never`둜 μ„ μ–Έν•˜λŠ” 기법이 쓰인닀 [10, 11]. `never`λŠ” μ–΄λ– ν•œ 값과도 ν˜Έν™˜λ˜μ§€ μ•ŠμœΌλ―€λ‘œ, λ“€μ–΄μ˜€λ©΄ μ•ˆ λ˜λŠ” 속성을 `never`둜 λ§€ν•‘ν•˜λ©΄ 값이 전달될 λ•Œ νƒ€μž… μ—λŸ¬λ₯Ό μœ λ°œν•˜μ—¬ 잘λͺ»λœ μ‚¬μš©μ„ λ§‰λŠ”λ‹€ [10, 12]. 이와 μœ μ‚¬ν•˜κ²Œ νŒλ³„μž(discriminant) 없이 μƒν˜Έ 배타적인 속성을 섀계할 λ•Œ, ν•œμͺ½μ΄ ν™œμ„±ν™”λ˜λ©΄ λ‹€λ₯Έ μͺ½μ˜ 속성을 `never` νƒ€μž…μœΌλ‘œ μ²˜λ¦¬ν•˜μ—¬ μ„žμž„ ν˜„μƒμ„ λ°©μ§€ν•  수 μžˆλ‹€ [13]. - **ν•¨μˆ˜ λ°˜ν™˜ νƒ€μž…μ—μ„œμ˜ ν™œμš©:** μ˜ˆμ™Έ(Error)λ₯Ό 던져 ν”„λ‘œκ·Έλž¨μ˜ 정상 흐름을 μ€‘λ‹¨ν•˜κ±°λ‚˜ λ¬΄ν•œ 루프λ₯Ό λ„λŠ” λ“±, κ²°μ½” μ •μƒμ μœΌλ‘œ μ™„λ£Œλ˜μ§€ μ•ŠλŠ” ν•¨μˆ˜μ˜ λ°˜ν™˜ νƒ€μž…μœΌλ‘œ λͺ…μ‹œν•œλ‹€ [2, 14]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[유나온 ᄐᅑ압 (Union Types)|μœ λ‹ˆμ˜¨ νƒ€μž… (Union Types)]], [[삭별 ᄀᅑ능ᄒᅑᆫ 유나온 (Discriminated Unions)|식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨ (Discriminated Unions)]], [[α„Œα…΅α†Έα„’α…‘α†Έα„…α…©α†« (Set Theory)|μ§‘ν•©λ‘  (Set Theory)]], [[α„Žα…©α„€α…ͺ 속ᄉα…₯α†Ό α„€α…₯ᆷᄉᅑ (Excess Property Checking)|초과 속성 검사 (Excess Property Checking)]] - **Projects/Contexts:** TypeScript μƒνƒœ 관리 및 μ—λŸ¬ 처리 λ°©μ–΄ (State Management and Defensive Error Handling) - **Contradictions/Notes:** `never`와 `void`λŠ” κΈ°λŠ₯적으둜 λ‹€λ₯΄λ‹€. ν•¨μˆ˜κ°€ μ •μƒμ μœΌλ‘œ 싀행을 마치고 아무 값도 λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” 경우(μ‹€μ œλ‘œλŠ” `undefined`λ₯Ό λ°˜ν™˜)μ—λŠ” `void`λ₯Ό 써야 ν•˜λ©°, μ˜ˆμ™Έλ₯Ό λ˜μ§€κ±°λ‚˜ μ˜μ›νžˆ μ’…λ£Œλ˜μ§€ μ•Šμ•„ μ‹€ν–‰ 흐름이 끝에 λ„λ‹¬ν•˜μ§€ λͺ»ν•˜λŠ” κ²½μš°μ—λ§Œ `never`λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€ [2, 14]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/never νƒ€μž….md ---