Files
2nd/10_Wiki/Topics/AI/Exhaustiveness-Checking.md
T

1.7 KiB

id, category, confidence_score, tags, last_reinforced
id category confidence_score tags last_reinforced
P-REINFORCE-AI-EXHAUSTIVENESS 10_Wiki/💡 Topics/AI 0.99
TypeScript
Safety
ExhaustivenessCheck
NeverType
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)