4.3 KiB
id, category, confidence_score, tags, last_reinforced, github_commit
| id | category | confidence_score | tags | last_reinforced | github_commit | |
|---|---|---|---|---|---|---|
| P-REINFORCE-AUTO-90D699 | 10_Wiki/💡 Topics/Programming & Language | 0.90 |
|
2026-04-20 | [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