---
id: P-REINFORCE-AUTO-F56CC2
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 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 never`는 `T`가 `never`일 때만 참이 된다 [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 & true` 및 `null & 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 never`는 `0 | 1`로 평가되어 `any` 타입이 공집합일 가능성도 내포하고 있는 패러독스(역설)적인 성질을 보인다 [17].

---
*Last updated: 2026-04-18*
- Raw Source: [[00_Raw/2026-04-20/never 타입(never type).md]]
---
