[typescript] 타입 별칭과 인터페이스의 선언과 사용 방법 비교
타입스크립트에서는 타입을 선언하고 사용하는 여러 가지 방법이 있습니다. 그 중에서도 타입 별칭과 인터페이스는 주로 사용되는데, 이 둘의 선언과 사용 방법을 비교해보겠습니다.
타입 별칭 (Type Alias)
타입 별칭은 특정 타입이나 인터페이스에 대해 다른 이름을 지정할 수 있는 기능입니다. 이를 활용하여 여러 곳에서 같은 타입을 재사용할 수 있습니다. 타입 별칭은 type
키워드를 사용하여 정의합니다.
type Person = {
name: string;
age: number;
};
type Employee = Person & {
id: number;
};
위 예제에서는 Person
과 Employee
라는 타입 별칭을 정의하고 있습니다. 이제 Person
이나 Employee
를 사용하여 타입을 지정할 수 있습니다.
인터페이스 (Interface)
인터페이스는 객체의 구조를 정의하는 역할을 합니다. interface
키워드를 사용하여 선언하며, 타입 별칭과 마찬가지로 재사용성을 높일 수 있습니다.
interface Person {
name: string;
age: number;
}
interface Employee extends Person {
id: number;
}
위 예제에서는 Person
과 Employee
라는 인터페이스를 정의하고 있습니다. 인터페이스를 사용하여 객체의 구조를 지정할 수 있습니다.
타입 별칭 vs. 인터페이스
타입 별칭과 인터페이스 모두 유사한 기능을 제공합니다. 그러나 몇 가지 차이점이 있습니다.
- 타입 별칭은
union
,intersection
,typeof
등과 함께 고급 타입을 지정할 수 있지만, 인터페이스는 불가능합니다. - 반면에, 인터페이스는 선언 병합이 가능하며, 같은 이름의 인터페이스를 여러 번 선언하여 확장할 수 있습니다. 타입 별칭은 이러한 선언 병합이 불가능합니다.
결론
타입 별칭과 인터페이스는 각각 장단점을 가지고 있으며, 상황에 따라 적합한 방법을 선택해야 합니다. 일반적으로, 구조적인 타입을 정의할 때는 인터페이스를 활용하고, 고급 타입을 정의할 때는 타입 별칭을 활용하는 것이 좋습니다.
위에서 설명한 내용은 타입스크립트 4.4 기준이며, 향후 버전에 따라 변경될 수 있습니다.
참고 문헌: 타입 별칭 vs. 인터페이스 - TypeScript 공식 문서