기본 패턴
ts
type Point = { x: number; y: number };
interface User {
id: number;
name: string;
}설명
type과interface는 모두 객체 구조에 이름을 붙일 수 있어, 일상 코드에서는 비슷하게 보이는 경우가 많습니다.interface는 객체 형태를 설명하는 데 특히 자연스럽고, 선언 병합 같은 확장 가능성이 있습니다.type은 객체뿐 아니라 union, tuple, primitive 조합 같은 더 넓은 타입 표현을 이름 붙이는 데 강합니다.- 실무에선 "객체 형태 중심이면 interface", "union이나 조합 타입이면 type"처럼 가볍게 구분해도 충분한 경우가 많습니다.
- TypeScript는 구조적 타입 시스템이므로 이름보다 실제 형태를 더 중요하게 본다는 점도 함께 기억해야 합니다.
짧은 예제
ts
interface Person {
name: string;
}
type Status = "idle" | "loading" | "done";빠른 정리
| 도구 | 잘 맞는 상황 |
|---|---|
interface | 객체 모양 정의, 확장 가능 구조 |
type | union, tuple, 조합 타입, 별칭 |
| 공통점 | 둘 다 이름 붙은 타입으로 재사용 가능 |
| 차이 핵심 | interface는 선언 병합 가능, type은 조합 표현이 더 넓음 |
| 실무 팁 | 객체는 interface, 조합은 type으로 시작해도 무난 |
주의할 점
둘 중 하나만 절대적으로 옳다고 보기보다, 표현하려는 타입의 성격을 보는 편이 좋습니다. 팀 규칙이 있다면 그 규칙을 우선하고, 없다면 역할에 따라 일관되게 쓰는 것이 중요합니다.
참고 링크
2 sources