Files
2nd/Programming & Language/네버 타입 (never type).md
T

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
auto-reinforced
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 neverT가 오직 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 타입으로 매핑하면, (예를 들어 stringnever에 할당할 수 없으므로) 컴파일러가 강력한 할당 에러를 뱉게 하여 초과 속성 검사(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: 소스에서는 nevervoid, any, unknown을 엄격하게 구분합니다. void는 정상적으로 완료되나 반환값이 없는 경우인 반면, never는 결코 도달할 수 없거나 완료되지 않는 값이라는 차이를 지적합니다 [5]. 또한 any는 타입 시스템을 우회하지만, never는 빈 집합으로서 타입 시스템 내에서 엄격한 논리적 제어를 돕는다는 상반된 특성을 지닙니다 [13, 14].

Last updated: 2026-04-18

  • Raw Source: 00_Raw/2026-04-20/네버 타입 (never type).md