1.7 KiB
1.7 KiB
id: P-Reinforce-AI-EXHAUSTIVENESS category: Unified confidence_score: 0.99 tags: [TypeScript, Safety, ExhaustivenessCheck, NeverType] last_reinforced: 2026-04-20
Exhaustiveness-Checking (망라성 검사)
📌 한 줄 통찰 (The Karpathy Summary)
"빠진 케이스가 없는지 컴파일러가 대신 체크하는 완벽주의자의 도구." 모든 가능한 타입 시나리오를 처리했음을 논리적으로 보장하여, 나중에 새로운 타입이 추가되었을 때 발생할 수 있는 런타임 에러를 원천 봉쇄하는 기법이다.
📖 구조화된 지식 (Synthesized Content)
- The Never Trick:
- 타입스크립트의
never타입을 활용한다. 모든 조건문(if/switch)이 끝난 뒤default케이스에const _check: never = remainValue;를 할당한다.
- 타입스크립트의
- How it works:
- 만약 처리하지 않은 타입이 남아 있다면, 그 값은
never타입에 할당될 수 없으므로 컴파일 에러가 발생한다.
- 만약 처리하지 않은 타입이 남아 있다면, 그 값은
- Value:
- 코드 유지보수 시 강력한 안전장치가 된다. 예를 들어
UserRole에 'Guest'가 새로 추가되면, 이를 처리하지 않은 모든 스위치 문에서 즉시 빨간 줄이 그어진다.
- 코드 유지보수 시 강력한 안전장치가 된다. 예를 들어
⚠️ 모순 및 업데이트 (RL Update)
- 망라성 검사는 '닫힌 시스템(Closed_system)'에서는 완벽하지만, 외부 라이브러리에서 동적으로 확장되는 타입에 대해서는 무력할 수 있다. 이때는
assertNever와 같은 헬퍼 함수를 사용하여 런타임 에러를 명시적으로 던지도록 설계해야 한다.
🔗 지식 연결 (Graph)
- Related: Discriminated-Unions , Type-Soundness
- Tool: TypeScript Compiler (tsc)