• 0
  • 2
January 05, 2025

타입스크립트의 타입과 인터페이스의 차이점

답변 확인

타입(Type)과 인터페이스(Interface)의 차이점

1. 확장성

  • Interface: 선언 병합을 지원하여 동일한 이름으로 여러 번 선언하면 자동으로 속성 병합
interface Person {
  age: number;
  name: string;
}
 
interface Person {
  address: string;
}
 
const person: Person = {
  age: 30,
  name: "John",
  address: "1010",
};
  • Type : 동일한 이름으로 중복 선언할 경우 에러가 발생

2. 복잡한 타입 정의

  • Type: 튜플, 유니온(|), 인터섹션(&) 연산자를 활용해 복잡한 타입을 표현하는 데 유리
type BasicInfo = {
  name: string;
  age: number;
};
 
type ContactInfo = {
  email: string;
  phone: string;
};
 
type PersonInfo = BasicInfo & ContactInfo;
 
const person: PersonInfo = {
  name: "John",
  age: 30,
  email: "john@example.com",
  phone: "123-456-7890",
};

차이점

  • Interface : 선언 병합 가능, 객체 타입 확장에 용이
  • Type : 튜플 및 복잡한 타입 조합에 유리, 유니온(|)과 인터섹션(&) 연산 지원

언제 무엇을 사용할까?

  • Type(타입)
    • 객체 외의 타입(유니온, 튜플, 함수 등)을 정의할 때
    • 객체 타입을 조합하거나 복잡한 타입을 정의할 때
    • 더 간결한 문법을 선호할 때
  • Interface(인터페이스)
    • 객체 타입 중심으로 정의할 때
    • 클래스와 연계해 사용하는 경우
    • 확장이 필요한 경우 (특히 선언 병합이 필요한 경우)

결론

  • 간단한 객체 타입 정의에서는 타입과 인터페이스 모두 사용 가능
  • 갹체 타입을 확장하거나 클래스와 연계해야 한다면 인터페이스를 사용하는것이 더 적합
  • 현대 프로젝트에서는 타입(alias) 가 더 유연하고 범용적으로 사용되는 경향

Top comments (2)

  • DavidYang2월 19일

    우와 댓글이다~

  • Olivia2월 19일

    오오 ~~ :) 너무 글 좋네용