질문 127 · 실전 면접 답변
never는 void와 어떻게 다르며 어디에 사용하나요?
이렇게 답해 보세요 (핵심 답변)
void는 함수가 정상 종료하지만 의미 있는 반환값을 쓰지 않는다는 뜻인 반면, never는 발생할 수 있는 값이 아예 없는 공집합 타입입니다. 따라서 항상 예외를 던져 정상 복귀하지 않는 함수의 반환 타입이 never가 됩니다. 실무에서는 판별 유니온을 switch 문으로 분기할 때 마지막 default 분기에서 값을 never 타입 인자에 대입해 두어, 나중에 새 유니온 멤버가 추가되었을 때 빠진 분기를 컴파일 타임에 잡는 용도로 자주 사용합니다.
함께 설명하면 좋은 이유 (꼬리질문 대비)
- 이와 같은 완전성 검사(Exhaustiveness Checking) 패턴을 위해 assertNever(value: never): never 헬퍼 함수를 만들어 default 분기에서 호출하곤 합니다.
- 서로 양립할 수 없는 두 타입의 교차 타입(예: string & number)이나 조건부 타입에서 특정 후보를 걸러낼 때도 결과로 never가 사용됩니다.
면접에서 자주 하는 실수
어떤 값이든 넣을 수 있는 전체 집합인 unknown(또는 타입 검사를 끄는 any)과, 어떤 값도 들어올 수 없는 공집합인 never는 정반대의 개념입니다.
원리와 예제까지 읽기
공식 참고 자료
질문 목록 출처 ↗ · 원본 127번을 바탕으로 질문과 답변을 새로 정리했습니다.