--- id: P-REINFORCE-AUTO-90D699 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 type)" --- # [[넀버 νƒ€μž… (never type)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > 지식 μš”μ•½ 정보 μΆ”μΆœ 쀑... ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **집합둠적 νŠΉμ„± (Set Theory Perspective):** `never`λŠ” μ§‘ν•©λ‘ μ˜ κ΄€μ μ—μ„œ '빈 μ§‘ν•©(empty set, βˆ…)'으둜 μ •μ˜λ©λ‹ˆλ‹€ [2]. μ–΄λ–€ νƒ€μž… `A`와 μœ λ‹ˆμ˜¨(`|`) 연산을 해도 `never`λŠ” 영ν–₯을 μ£Όμ§€ μ•ŠμœΌλ©°(`A | never = A`), ꡐ집합(`&`) 연산을 ν•˜λ©΄ 항상 `never`κ°€ λ©λ‹ˆλ‹€(`A & never = never`) [2, 6]. 빈 집합은 λͺ¨λ“  μ§‘ν•©μ˜ λΆ€λΆ„μ§‘ν•©μ΄λ―€λ‘œ `never extends T`λŠ” 항상 μ°Έ(true)μ΄μ§€λ§Œ, `T extends never`λŠ” `T`κ°€ 였직 `never` νƒ€μž…μΌ λ•Œλ§Œ 참이 λ©λ‹ˆλ‹€ [3]. * **ν•¨μˆ˜μ˜ λ°˜ν™˜ νƒ€μž… (Function Return Type):** λ¬΄ν•œ 루프에 λΉ μ Έ μ ˆλŒ€ μ™„λ£Œλ˜μ§€ μ•Šκ±°λ‚˜, 항상 μ—λŸ¬(Exception)λ₯Ό λ˜μ§€κΈ°λ§Œ ν•˜λŠ” ν•¨μˆ˜μ˜ λ°˜ν™˜ νƒ€μž…μœΌλ‘œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€ [1, 5]. ν•¨μˆ˜κ°€ 싀행을 마치고 아무것도 λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ”(μ‹€μ§ˆμ μœΌλ‘œλŠ” `undefined`λ₯Ό λ°˜ν™˜ν•˜λŠ”) κ²½μš°μ— μ“°μ΄λŠ” `void` νƒ€μž…κ³ΌλŠ” λͺ…ν™•νžˆ λ‹€λ¦…λ‹ˆλ‹€ [5]. * **νƒ€μž… μ’νžˆκΈ°μ™€ μ™„μ „μ„± 검사 (Type Narrowing & Exhaustiveness Checking):** 식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨(Discriminated Unions)을 `switch` λ¬Έ λ“±μœΌλ‘œ λΆ„κΈ° μ²˜λ¦¬ν•  λ•Œ μ•ˆμ „μž₯치 역할을 ν•©λ‹ˆλ‹€ [4, 7]. κ°œλ°œμžκ°€ λͺ¨λ“  κ°€λŠ₯ν•œ μΌ€μ΄μŠ€λ₯Ό μ •μƒμ μœΌλ‘œ μ²˜λ¦¬ν–ˆλ‹€λ©΄, 뢄기문을 λ‹€ 거치고 남은 λ³€μˆ˜μ˜ νƒ€μž…μ€ `never`둜 μ’ν˜€μ§‘λ‹ˆλ‹€(narrowed) [1, 7]. λ§Œμ•½ μ²˜λ¦¬λ˜μ§€ μ•Šμ€ μΌ€μ΄μŠ€κ°€ ν•˜λ‚˜λΌλ„ λ‚¨μ•„μžˆλ‹€λ©΄ ν•΄λ‹Ή λ³€μˆ˜λŠ” μ‹€μ œ νƒ€μž…μ„ κ°–κ²Œ 되며, 이λ₯Ό `never` νƒ€μž…μœΌλ‘œ 검사(예: `assertNever` ν•¨μˆ˜ μ‚¬μš©)ν•˜λ € ν•  λ•Œ νƒ€μž… μ—λŸ¬κ°€ λ°œμƒν•˜μ—¬ λŸ°νƒ€μž„ 버그λ₯Ό 사전에 λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [7, 8]. * **νƒ€μž… 좩돌 및 초과 속성 λ°©μ–΄ (Type Conflicts & Excess Properties):** μ„œλ‘œ ν˜Έν™˜λ˜μ§€ μ•ŠλŠ” 속성을 κ°€μ§„ 두 νƒ€μž…μ„ ꡐ집합(`&`)으둜 묢을 λ•Œ, TypeScriptλŠ” 이λ₯Ό κ³„μ‚°ν•˜μ—¬ `never` νƒ€μž…μœΌλ‘œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€ [9]. λ˜ν•œ, κ°μ²΄μ—μ„œ μ˜ˆμƒμΉ˜ λͺ»ν•œ 초과 속성을 κ°μ§€ν•˜κΈ° μœ„ν•œ κ³ κΈ‰ νƒ€μž… κΈ°λ²•μ—μ„œλ„ ν™œμš©λ©λ‹ˆλ‹€. μž…λ ₯된 객체에 ν—ˆμš©λ˜μ§€ μ•Šμ€ 초과 속성이 μžˆμ„ 경우 κ·Έ 속성을 `never` νƒ€μž…μœΌλ‘œ λ§€ν•‘ν•˜λ©΄, (예λ₯Ό λ“€μ–΄ `string`은 `never`에 ν• λ‹Ήν•  수 μ—†μœΌλ―€λ‘œ) μ»΄νŒŒμΌλŸ¬κ°€ κ°•λ ₯ν•œ ν• λ‹Ή μ—λŸ¬λ₯Ό λ±‰κ²Œ ν•˜μ—¬ 초과 속성 검사(Excess Property Checking)λ₯Ό μš°νšŒν•˜λŠ” 것을 막을 수 μžˆμŠ΅λ‹ˆλ‹€ [10, 11]. * **μƒν˜Έ 배타적 속성 κ΅¬ν˜„ (Exclusive Props):** νŠΉμ • μ‘°κ±΄μ΄λ‚˜ 속성이 ν™œμ„±ν™”λ˜μ—ˆμ„ λ•Œ, λ‹€λ₯Έ 속성듀이 ν•¨κ»˜ μ‚¬μš©λ˜λŠ” 것을 막기 μœ„ν•΄ μƒν˜Έ 배타적인 속성듀을 `never`둜 μ²˜λ¦¬ν•˜λŠ” νŒ¨ν„΄μ— μ‚¬μš©λ©λ‹ˆλ‹€. 이 방식을 톡해 μ‹λ³„μž(discriminant) 없이도 "이것 μ•„λ‹ˆλ©΄ 저것"의 ꡬ쑰λ₯Ό μ•ˆμ „ν•˜κ²Œ κ°•μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [12]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨ (Discriminated Unions)]], [[μ§‘ν•©λ‘  (Set Theory)]], [[초과 속성 검사 (Excess Property Checking)]], [[ꡬ쑰적 타이핑 (Structural Typing)]] - **Projects/Contexts:** [[Type-safe Error Handling & Exhaustiveness Checking]], [[TypeScript Advanced Type System]] - **Contradictions/Notes:** μ†ŒμŠ€μ—μ„œλŠ” `never`와 `void`, `any`, `unknown`을 μ—„κ²©ν•˜κ²Œ κ΅¬λΆ„ν•©λ‹ˆλ‹€. `void`λŠ” μ •μƒμ μœΌλ‘œ μ™„λ£Œλ˜λ‚˜ λ°˜ν™˜κ°’μ΄ μ—†λŠ” 경우인 반면, `never`λŠ” κ²°μ½” 도달할 수 μ—†κ±°λ‚˜ μ™„λ£Œλ˜μ§€ μ•ŠλŠ” κ°’μ΄λΌλŠ” 차이λ₯Ό μ§€μ ν•©λ‹ˆλ‹€ [5]. λ˜ν•œ `any`λŠ” νƒ€μž… μ‹œμŠ€ν…œμ„ μš°νšŒν•˜μ§€λ§Œ, `never`λŠ” 빈 μ§‘ν•©μœΌλ‘œμ„œ νƒ€μž… μ‹œμŠ€ν…œ λ‚΄μ—μ„œ μ—„κ²©ν•œ 논리적 μ œμ–΄λ₯Ό λ•λŠ”λ‹€λŠ” μƒλ°˜λœ νŠΉμ„±μ„ μ§€λ‹™λ‹ˆλ‹€ [13, 14]. --- *Last updated: 2026-04-18* - Raw Source: [[00_Raw/2026-04-20/넀버 νƒ€μž… (never type).md]] ---