Interface와 Type Alias

TypeScript에서 interface와 type alias는 모두 타입을 정의하는데 사용되지만, 사용 목적과 몇 가지 차이점이 있다.

Interface

  • 주로 객체의 구조와 속성을 정의하는 데 사용됩니다.
  • 클래스(class)가 구현할 수 있는 것들을 명시하거나, 객체의 형태와 메서드를 정의하는 데 주로 사용
  • extends를 사용하여 다른 인터페이스를 확장
  • 상속이 가능하고, 클래스와의 관계를 맺을 수 있다.
  • 같은 이름의 인터페이스를 중복해서 선언해도 병합되어 사용된다.
interface Person {
  name: string
  age: number
}
 
interface Employee extends Person {
  jobTitle: string
}
 
const employee: Employee = {
  name: 'John',
  age: 30,
  jobTitle: 'Developer'
}

Type Alias

  • 다양한 타입을 결합하거나, 별칭을 지어주는 등의 용도로 사용
  • 유니온(Union) 타입, 인터섹션(Intersection) 타입 등을 정의할 때 사용
  • extends 사용 불가능
  • 객체의 구조 뿐만 아니라 기본 타입, 유니온, 튜플 등 다양한 타입에 적용 가능
type Age = number
type FullName = string
type Person = {
  name: FullName
  age: Age
}
 
type Employee = Person & {
  jobTitle: string
}
 
const employee: Employee = {
  name: 'John',
  age: 30,
  jobTitle: 'Developer'
}