TypeScript객체와 함수

type alias와 interface

객체 구조를 이름 붙여 재사용할 때 type alias와 interface를 어떻게 나눠 생각할지 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

ts
type Point = { x: number; y: number };

interface User {
  id: number;
  name: string;
}

설명

  • typeinterface는 모두 객체 구조에 이름을 붙일 수 있어, 일상 코드에서는 비슷하게 보이는 경우가 많습니다.
  • interface는 객체 형태를 설명하는 데 특히 자연스럽고, 선언 병합 같은 확장 가능성이 있습니다.
  • type은 객체뿐 아니라 union, tuple, primitive 조합 같은 더 넓은 타입 표현을 이름 붙이는 데 강합니다.
  • 실무에선 "객체 형태 중심이면 interface", "union이나 조합 타입이면 type"처럼 가볍게 구분해도 충분한 경우가 많습니다.
  • TypeScript는 구조적 타입 시스템이므로 이름보다 실제 형태를 더 중요하게 본다는 점도 함께 기억해야 합니다.

짧은 예제

ts
interface Person {
  name: string;
}

type Status = "idle" | "loading" | "done";

빠른 정리

도구잘 맞는 상황
interface객체 모양 정의, 확장 가능 구조
typeunion, tuple, 조합 타입, 별칭
공통점둘 다 이름 붙은 타입으로 재사용 가능
차이 핵심interface는 선언 병합 가능, type은 조합 표현이 더 넓음
실무 팁객체는 interface, 조합은 type으로 시작해도 무난

주의할 점

둘 중 하나만 절대적으로 옳다고 보기보다, 표현하려는 타입의 성격을 보는 편이 좋습니다. 팀 규칙이 있다면 그 규칙을 우선하고, 없다면 역할에 따라 일관되게 쓰는 것이 중요합니다.

참고 링크

2 sources