TypeScript 인터페이스

유진·2026년 4월 5일

TypeScript

목록 보기
3/6

인터페이스

  • 인터페이스: 객체의 구조를 정의하는 설계도이자 해당 객체가 반드시 지켜야 할 약속

기본 구조

interface User{
  name: string;
  age: number;
  readonly birthYear: number;
}

let user : User {
  name: 'xx',
  age: 20,
  birthYear: 2000,
}

핵심 기능

  • 읽기 전용 속성 (Readonly): 객체를 처음 생성할 때만 값 할당, 추후 수정 불가
  • 옵셔널 프로퍼티: 객체의 특정 속성이 선택 사항임을 명시할 때 사용, 속성 이름 뒤에 ? 를 붙여 정의
interface Point {
  readonly x: number;
  readonly y: number;
  z? : number;
}

let p1: Point = { x: 10, y: 20 };
// p1.x = 5; //수정 불가
  • 인덱스 시그니처: 속성의 이름을 미리 알 수 없지만, 값들의 타입이 일정할 때 사용
interface UserList {
  [key: string]: string; // 키는 문자열, 값도 문자열인 모든 속성 허용
}

인터페이스 확장

  • 인터페이스의 가장 강력한 특징 중 하나
  • 기존 인터페이스를 복사해 새로운 내용을 추가할 수 있어 코드의 재사용성이 매우 높음
interface Animal {
  name: string;
}

interface Dog extends Animal {
  breed: string; // Animal의 name을 그대로 물려받고 breed 추가
}

const myDog: Dog = {
  name: "멍멍이",
  breed: "진돗개"
};

인터페이스를 사용하는 이유

  • 일관성 유지: 대규모 프로젝트에서 여러 개발자가 동일한 객체 구조를 사용하도록 강제할 수 있음
  • 문서화 효과: 해당 객체가 어떤 데이터를 담고 있는지 파악 가능
  • 유지보수: API 응답 데이터처럼 구조가 바뀌기 쉬운 데이터를 인터페이스로 관리하면, 구조 변경 시 에러가 발생하는 모든 곳을 즉시 찾아내 수정 가능

0개의 댓글