TypeScript

type 과 interface 차이점

2025년 12월 18일

🟢 TypeScript: type vs interface 비교

TypeScript에서는 객체, 함수, 클래스 타입을 정의할 때 typeinterface 두 가지를 쓸 수 있어요.

둘 다 비슷하지만, 미묘한 차이가 있고 활용에 따라 장단점이 달라집니다.


1️⃣ 기본 문법

interface

interface User {
  id: number;
  name: string;
  email?: string; // 선택 속성
}

type

type User = {
  id: number;
  name: string;
  email?: string; // 선택 속성
}

기본 객체 타입 정의는 거의 동일


2️⃣ 확장 & 합치기

interface는 extends 가능

interface Person {
  name: string;
}
 
interface Employee extends Person {
  salary: number;
}

type은 교차 타입(Intersection) 으로 확장

type Person = { name: string };
type Employee = Person & { salary: number }
  • type은 & 연산자를 사용해 다른 타입과 합칠 수 있음

3️⃣ 선언 병합 (Declaration Merging)

  • interface는 같은 이름으로 여러 번 선언 가능 → 자동으로 합쳐짐
interface User {
  id: number;
}
interface User {
  name: string;
}
// User는 { id: number; name: string }으로 병합
  • type은 선언 병합 불가 → 같은 이름으로 두 번 선언하면 에러
type User = { id: number };
type User = { name: string }; // ❌ 에

4️⃣ 타입 표현력

  • typeprimitive, union, tuple 등 다양한 타입 표현 가능
type ID = number | string;
type Point = [number, number];
  • interface는 객체 형태의 타입만 선언 가능

5️⃣ 요약 비교

구분interfacetype
객체 정의
함수 타입✅ 가능✅ 가능
상속/확장extends 가능& 연산으로 가능
선언 병합가능불가
유니언, 튜플 등
장점선언 병합 가능, 객체 중심더 다양한 타입 표현 가능