TypeScript - interface, type 사용 케이스

·2025년 6월 20일
0

TypeScript

목록 보기
9/9
post-thumbnail

부끄럽지만 본인이 interface와 type을 무슨 기준을 두고 사용해야할지 명확하게 알지 못하는 것 같아 재정리

객체로 표현해야할 때: interface
특정 값만을 허용하는 매개변수 혹은 변수 혹은 함수 반환값: type

객체 형태 정의는 interface

객체의 구조나 클래스 형태를 정의할 때 interface가 적합하다.

Interface의 장점

  • 선언 병합(Declaration Merging) 가능
  • 더 나은 에러 메시지 제공
  • 객체 지향적 상속 스타일에 적합

특정 값을 제한할 때는 Type

특정 값만 허용하는 유니온 타입이나 원시 타입 별칭에는 type이 더 적합하다.

Type의 장점

  • 유니온 타입과 인터섹션 타입 표현 가능
  • 원시 타입 별칭 생성 가능
  • 튜플과 함수 타입 정의에 적합

예시코드

// ❌ 기존 코드 (객체로 정의했지만 실제로는 문자열만 필요)
interface ICategoryProps {
    category: "group" | "intro" | "center";
}

// ✅ 개선된 코드 (특정 값만 허용하므로 type 사용)
type CategoryType = "group" | "intro" | "center";

// 객체 구조가 필요하다면 interface 사용
interface CategoryItem {
    category: CategoryType;  // type을 interface에서 활용
    name: string;
    description?: string;
}

요약

Interface 사용 케이스

  • 객체의 형태나 클래스 계약 정의
  • 확장 가능성이 있는 공개 API
  • 선언 병합이 필요한 경우

Type 사용 케이스

  • 유니온/인터섹션 타입
  • 원시 타입 별칭
  • 함수 타입이나 튜플
  • 특정 값들만 허용하는 제한적 타입
profile
- 배움에는 끝이 없다.

0개의 댓글