Files
2nd/Programming & Language/never 타입(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-F56CC2 10_Wiki/💡 Topics/Programming & Language 0.90
auto-reinforced
2026-04-20 [P-Reinforce] Continuous Worker - never 타입(never type)

never 타입(never type)

📌 한 줄 통찰 (The Karpathy Summary)

never 타입은 타입스크립트에서 절대 발생하지 않는 값의 타입을 의미하며, 집합론적으로는 어떠한 값도 포함하지 않는 '공집합(empty set)'으로 기능한다 [1, 2]. 주로 모든 케이스가 처리되었는지 확인하는 철저함 검사(exhaustiveness checking), 오류를 발생시키거나 절대 반환하지 않는 함수의 반환 타입, 그리고 양립할 수 없는 타입들을 교차했을 때 발생하는 타입으로 활용된다 [3-6]. 다른 모든 타입에 할당될 수는 있지만, never 자신 외에는 어떤 타입도 never에 할당할 수 없는 특성을 지닌다 [7, 8].

📖 구조화된 지식 (Synthesized Content)

  • 집합론적 관점(Set Theory): never 타입은 집합론의 공집합(∅)에 해당한다 [2, 9]. 따라서 임의의 타입 A에 대해 A & never = never, A | never = A가 항상 성립한다 [2, 10]. 공집합은 모든 집합의 부분집합이므로 never extends T는 언제나 참(true)이지만, T extends neverTnever일 때만 참이 된다 [8].
  • 완전성 검사(Exhaustiveness Checking): 식별 가능한 유니온(Discriminated Unions)을 switch 문 등에서 처리할 때, 모든 케이스를 다루었는지 확인하는 데 never를 사용한다 [3, 11, 12]. 개발자가 의도한 분기를 제외하고 남은 값을 never 타입 변수에 할당하도록 하면, 추후 처리되지 않은 새로운 타입이 유니온에 추가되었을 때 컴파일 타입 에러를 발생시켜 실수를 방지할 수 있다 [12, 13].
  • 초과 속성 검출 및 상호 배타적 속성 모델링: never 타입이 다른 어떤 타입과도 호환되지 않는 특성을 이용해, 특정 속성이 입력되는 것을 원천 차단할 수 있다 [7]. 초과 속성에 never를 할당하도록 만들면 런타임 이전의 타입 검사에서 에러를 유발하며 [7, 14], 이를 응용하면 한쪽 타입이 활성화될 때 다른 속성은 never로 만들어 혼용을 방지하는 상호 배타적(Exclusive Props) 관계를 구현할 수 있다 [15].
  • 함수 반환 타입(Function Return Type): 예외(error)를 던지거나 멈추지 않는 무한 루프에 빠져 영원히 완료되지 않는 함수의 반환 타입으로 사용된다 [5, 6]. 이는 단순히 기능 수행 후 아무것도 반환하지 않고 종료되는 함수의 void 타입(실제로는 undefined를 반환함)과는 뚜렷이 구별된다 [5].
  • 타입 교집합의 결과: 구조적 타이핑 내에서 교집합(&)을 통해 속성을 재귀적으로 병합할 때 충돌이 나거나, false & truenull & boolean과 같이 동시에 만족할 수 없는 양립 불가능한 타입을 교차할 경우 결과적으로 never 타입이 생성된다 [4, 9, 16].

⚠️ 모순 및 업데이트 (Contradictions & RL Update)

  • 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
  • 정책 변화: Programming & Language 분야의 자동 자산화 수행.

🔗 지식 연결 (Graph)

  • Related Topics: 식별 가능한 유니온(Discriminated Unions), 초과 속성 검사(Excess Property Checking), 구조적 타이핑(Structural Typing)
  • Projects/Contexts: switch문 완전성 검사(Exhaustiveness checking), 에러 핸들링 및 무한 루프 함수 설계, 상호 배타적 속성(Exclusive Props) 패턴
  • Contradictions/Notes: 종료 후 반환값이 없는 함수는 undefined를 반환하는 것이므로 void 타입을 지정해야 하며, never 타입은 절대 정상 종료되지 않는 함수에만 사용해야 한다 [5]. 또한 모든 타입의 상위 집합인 any 타입과 비교 시, any extends never0 | 1로 평가되어 any 타입이 공집합일 가능성도 내포하고 있는 패러독스(역설)적인 성질을 보인다 [17].

Last updated: 2026-04-18

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