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

Fanta Lab

질문 116 · 실전 면접 답변

type 별칭과 interface는 어떤 기준으로 선택하나요?

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

interface는 객체나 클래스의 구조를 선언할 때 사용하며 extends 상속과 동일 이름의 선언 병합(Declaration Merging)을 지원합니다. 반면 type 별칭은 객체뿐 아니라 유니온(A | B), 튜플, 원시 타입 등 모든 타입 표현식에 이름을 붙일 수 있습니다. 실무에서는 유니온이나 복잡한 타입 조합에는 type을 쓰고, 외부 확장을 열어 두어야 하는 객체 계약에는 interface를 선택하며, 일반 객체 모델은 팀 컨벤션에 맞춰 일관되게 사용합니다.

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

  1. 같은 스코프에 동일한 이름의 interface를 여러 번 선언하면 멤버가 합쳐지지만, type 별칭은 중복 선언 시 컴파일 에러가 발생합니다.
  2. 객체 타입을 확장할 때 interface extends는 프로퍼티 타입이 충돌하면 선언 시점에 바로 에러를 내지만, 교차 타입(&)은 해당 프로퍼티를 never로 합쳐 버릴 수 있습니다.

면접에서 자주 하는 실수

type 별칭은 확장이 불가능하다고 오해하기 쉬운데, 실제로는 교차 타입(&)을 통해 기존 객체 타입을 얼마든지 조합하고 확장할 수 있습니다.

원리와 예제까지 읽기

공식 참고 자료

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

← TypeScript