GitHub
TYPESCRIPT

Type과 Interface의 차이는 무엇인가요?

Updated On : 2025.09.07
TypeScript
Type
Interface

답변

typeinterface는 TypeScript에서 객체의 구조를 정의하거나, 타입을 설명하는 데 사용하는 키워드입니다. 객체 리터럴 방식으로 매번 타입을 지정하게 되면 중복 코드가 매우 많아질 것입니다. type이나 interface를 사용해서 미리 타입을 선언해 두면 필요한 곳에서 타입을 사용할 수 있습니다. 이 두개는 매우 유사하고, 대부분의 경우 자유롭게 선택해서 사용할 수 있으며, 다음과 같은 차이점이 있습니다.

type

type은 type alias(별칭)를 정의할 때 사용됩니다. 동일한 이름으로 type을 재선언하면 에러가 발생하게 됩니다. &를 사용해서 다른 타입과 합쳐 확장이 가능하며, 유니언/튜플/리터럴 등 모든 타입의 정의가 가능합니다.

type을 사용하면 디버깅 시 에러 메시지에 리터럴한 타입 정의가 직접 표시됩니다. 따라서 복잡한 타입 조합에 유연하다는 특징이 있습니다.

interface

interface는 객체의 구조를 정의할 때 사용됩니다. 이 키워드를 사용해서 타입을 동일한 이름으로 여러 번 선언하면 병합됩니다. extends로 타입 확장이 가능하며, 유니언 타입으로 직접 선언이 불가합니다.

interface는 이름 기반으로 타입을 추적하기 때문에 디버깅 시 interface의 이름만 표시됩니다. 선언 병합과 상속에 강점이 있는 키워드입니다.

정리

typeinterface는 혼용해도 문제가 없습니다. 다만, 일관된 코드 스타일을 위해서 언제, 어떻게 사용할 지에 대한 팀 컨벤션을 세우는 것이 좋습니다.

구분typeinterface
확장& 연산자로 합성 가능extends로 상속 가능, 다중 상속 지원
선언 병합불가가능 (같은 이름으로 여러 번 선언 시 병합)
용도원시, 유니온, 튜플 등 모든 타입 정의 가능객체 구조 정의에 최적화
IDE 표시에러 시 타입 정의 전체 노출에러 시 인터페이스 이름만 표시
댑댑댑