인터페이스 vs 타입 별칭
Coddy JavaScript 여정의 TypeScript 소개 섹션에 포함된 레슨. 73개 중 40번째.
객체 형태를 정의하기 위한 타입 별칭(type aliases)과 인터페이스(interfaces)에 대해 모두 배웠으므로, 각 접근 방식을 언제 사용해야 하는지 이해하는 것이 중요합니다. 이들은 유사한 목적을 수행하지만, 선택에 영향을 줄 수 있는 몇 가지 주요 차이점이 있습니다.
공통점: 인터페이스(interface)와 타입 별칭(type alias) 모두 동일한 수준의 타입 안전성으로 객체의 구조를 정의할 수 있습니다. 두 방식 중 하나를 사용하여 필수 속성, 선택적 속성 및 읽기 전용(readonly) 속성을 지정할 수 있습니다. 또한 두 방식 모두 다른 타입과의 확장 또는 결합을 지원합니다.
주요 차이점 - 선언 병합: 가장 중요한 차이점은 인터페이스는 선언 병합(declaration merging)을 지원하는 반면, 타입 별칭은 지원하지 않는다는 것입니다. 이는 동일한 인터페이스를 여러 번 선언할 수 있으며, TypeScript가 자동으로 모든 선언을 하나의 인터페이스로 병합함을 의미합니다:
interface User {
name: string;
}
interface User {
age: number;
}
// TypeScript는 이들을 다음과 같이 병합합니다:
// interface User {
// name: string;
// age: number;
// }타입 별칭(type aliases)으로 동일한 방식을 시도하면, TypeScript는 중복된 식별자에 대한 오류를 발생시킵니다. 이러한 병합 기능은 라이브러리와 작업하거나 코드베이스의 여러 부분에서 기존 타입 정의를 확장해야 할 때 인터페이스(interfaces)를 특히 유용하게 만듭니다.
선택 기준: 나중에 확장하거나 병합해야 할 수도 있는 객체 형태를 정의할 때는 interfaces를 사용하세요. unions, intersections와 같은 더 복잡한 타입 연산이 필요하거나 primitive types를 다룰 때는 type aliases를 사용하세요.
직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
TypeScript 소개의 모든 레슨
직접 연습해 보세요: 온라인 JavaScript 컴파일러