인프런 커뮤니티 질문&답변

김강연님의 프로필 이미지
김강연

작성한 질문수

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

인터페이스 합치기

type선언보단 interface를 쓰는 것이 낫지 않나요?

작성

·

621

0

interface는 호환성도 좋고 선언 합침도 쉽고

함수의 오버로딩도 가능한데 type대신 interface를 사용하는 것이 더 좋은 것 아닌가요?
왜 이 둘을 나눈 것인가요?

답변 2

2

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

아래 AI인턴이 거의 완벽한 답을 해 주었네요

우선 질문주신대로 interface는 type 별칭과 비교해 선언 합침 이나 상속 등의 다양한 기능을 제공합니다
다만 인덱스드 엑세스 타입이나 유니온 타입등을 만들때에는 사용할 수 없기 때문에 이럴 경우 type 별칭을 사용하곤 합니다.

타입스크립트 개발자분들께서 왜 그렇게 언어를 설계하였는지 자세한 이유까지는 알기 어렵지만
개인적인 주관을 말씀드려보자면

먼저 인터페이스는 객체의 타입을 정의하기 위한 용도로 만들어 졌기 때문에
상속이나 합침 등의 기능을 지원하고 클래스가 상속받도록 만들수도 있어
클래스의 인스턴스나 메서드 타입을 정의하는 용도로도 활용됩니다.

타입 별칭의 경우에는 객체 지향 개념 없이 단순히 타입에 별도의 이름을 붙여 부르는 타입을 담는 변수 정도의 역할로 설계되었다고 보는게 좋을 것 같습니다.

2

안녕하세요, 인프런 AI 인턴이에요. type과 interface는 TypeScript에서 타입을 정의하기 위해 사용되는 두 가지 방법입니다. 이 둘을 나눈 이유와 각각의 특징에 대해 설명해드릴게요.

먼저, type은 해당 타입에 별칭을 지정하는 역할을 합니다. 예를 들어, 특정한 타입을 여러 번 사용해야 하는 경우에 해당 타입에 별칭을 지정하여 더 편리하게 사용할 수 있습니다. type을 사용하면 기본 타입뿐만 아니라 유니언 타입, 튜플 등 다양한 타입을 정의할 수 있습니다.

반면에, interface는 클래스나 객체의 구조를 정의하는 역할을 합니다. 클래스나 객체가 가져야 하는 속성과 메서드의 형식을 정의하여 해당 형식을 준수하는 객체를 생성할 수 있습니다. 또한, 인터페이스를 사용하면 클래스가 해당 인터페이스를 구현하도록 강제할 수 있어 코드의 일관성과 신뢰성을 높일 수 있습니다.

두 가지 방식의 가장 큰 차이점은 확장 가능성입니다. type은 유니온 타입 등을 이용하여 조합해서 사용할 수 있지만, 이미 정의된 타입에 대해서는 추가적인 확장이 어렵습니다. 하지만 interface는 상속을 통해 다른 인터페이스를 확장할 수 있기 때문에 더 유연하게 타입을 구성할 수 있습니다.

따라서, 기본적인 타입을 정의하거나 타입에 별칭을 지정하려면 type을 사용하고, 클래스나 객체의 형식을 정의하거나 타입을 확장하려면 interface를 사용하는 것이 일반적입니다. 어떤 것이 더 좋은지는 사용자의 상황과 선호도에 따라 다를 수 있습니다.

김강연님의 프로필 이미지
김강연

작성한 질문수

질문하기