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'
}