학습 공간 개념 · 판단 · 실험

Fanta Lab

질문 120 · 실전 면접 답변

타입 가드와 타입 단언은 어떤 보장이 다른가요?

이렇게 답해 보세요 (핵심 답변)

타입 가드(Type Guard)는 typeof, instanceof, in 연산자나 판별 필드 비교처럼 실제 런타임에 실행되는 조건문을 통해 컴파일러가 분기 안의 타입을 안전하게 좁히도록(Narrowing) 만드는 방식입니다. 반면 타입 단언(as T)은 런타임 검사를 전혀 수행하지 않고 컴파일러에게 특정 타입으로 간주하라고 강제하는 표기입니다. 따라서 외부 API 응답처럼 불확실한 값은 as 단언 대신 실제 값을 확인하는 타입 가드로 검증해 다루어야 안전합니다.

함께 설명하면 좋은 이유 (꼬리질문 대비)

  1. 타입 가드를 쓰면 조건이 거짓인 분기(else)에서도 남은 후보 타입이 자동으로 계산되어 모든 경우를 안전하게 처리할 수 있습니다.
  2. 사용자 정의 타입 가드(x is User)를 직접 작성할 때는 함수 내부의 실제 boolean 검사 로직이 반환 타입 선언과 정확히 일치하도록 주의해야 합니다.

면접에서 자주 하는 실수

JSON.parse(text) as User처럼 단언을 쓰면 컴파일 에러만 가려질 뿐, 실제 문자열에 필수 필드가 없을 때 발생하는 런타임 에러는 막지 못합니다.

원리와 예제까지 읽기

공식 참고 자료

질문 목록 출처 ↗ · 원본 120번을 바탕으로 질문과 답변을 새로 정리했습니다.

← TypeScript