패스잇
프론트엔드 개발 · 중급

TypeScript에서 타입 별칭(Type Aliases)과 인터페이스(Interfaces)는 모두 객체 타입을 정의하는 데 사용됩니다. 두 가지의 주요 차이점은 무엇이며, 각각 어떤 상황에서 더 적합한지 설명해 주세요.

힌트 · 인터페이스는 선언적 병합(Declaration Merging)이 가능하며 주로 객체 타입을 정의하는 데 사용되고, 타입 별칭은 유니언/인터섹션 타입, 원시 타입 등 더 다양한 타입에 대한 별칭을 정의할 수 있습니다.

선언 병합유니온 타입원시 타입구현extends/implements

모범답안

TypeScript에서 타입 별칭과 인터페이스는 객체 타입을 정의하는 데 사용될 수 있지만, 몇 가지 중요한 차이점이 있습니다.

가장 큰 차이점은 인터페이스는 "선언 병합(Declaration Merging)"이 가능하다는 점입니다. 같은 이름의 인터페이스가 여러 번 선언되면 컴파일러가 이를 자동으로 병합합니다. 반면, 타입 별칭은 같은 이름으로 여러 번 선언할 수 없습니다.

또한, 타입 별칭은 객체 타입뿐만 아니라 유니온 타입, 인터섹션 타입, 원시 타입 등 더 넓은 범위의 타입에 대한 별칭을 정의할 수 있습니다. 예를 들어 type StringOrNumber = string | number; 와 같이 사용할 수 있습니다.

일반적으로 객체 타입을 정의하고 확장 가능성이 높다면 인터페이스를 사용하는 것이 좋습니다. 클래스에서 implements 키워드를 사용하여 인터페이스를 구현할 수도 있습니다. 반면, 유니온 타입이나 튜플 타입 등 복잡한 타입을 정의하거나, 단순히 기존 타입을 더 명확하게 표현하고 싶을 때는 타입 별칭이 더 적합합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 TypeScript 면접 질문

← TypeScript 면접 질문 전체 보기