별칭과 객체 계약

type과 interface 선택표

type은 모든 타입 표현에 이름을 붙일 수 있고, interface는 객체 모양의 확장 가능한 계약을 만들 때 강합니다.

type 별칭

표현 범위가 넓음

원시 타입, 유니온, 튜플, 함수 타입까지 하나의 이름으로 묶을 수 있습니다.

type ID = string
interface

객체 shape에 강함

객체 속성과 메서드 계약을 선언하고 extends로 확장하기 쉽습니다.

interface User
확장 방식

교차와 상속

type은 인터섹션으로 합치고 interface는 extends로 계층을 드러냅니다.

Base & Extra
선언 병합

라이브러리 확장

interface는 같은 이름 선언이 병합되어 외부 타입 점검에 유리합니다.

declare global
객체 공개 API 컴포넌트 props나 서비스 계약처럼 확장될 객체는 interface가 어울립니다.
복합 타입 여러 선택지를 조합하거나 튜플을 이름 붙일 때는 type이 편합니다.
팀 규칙 둘 다 가능한 경우에는 프로젝트 컨벤션을 우선해 일관성을 유지합니다.

정답은 하나가 아니라 표현하려는 타입의 성격과 앞으로 확장될 방식을 기준으로 결정합니다.