4.3 KiB
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 |
|
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 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