inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

인터페이스 합치기

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

731

김강연

작성한 질문수 11

0

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

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

typescript

답변 2

2

이정환 Winterlood

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

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

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

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

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

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

2

인프런 AI 인턴

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

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

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

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

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

핸드북 light/dark mode 관련 이슈가 있는 것 같습니다.

0

20

1

제네릭 클래스 핸드북 페이지가 undefined라고 나옵니다.

0

30

2

적절한 타입 찾기 React.ChangeEvent<HTMLInputElemen>

0

36

2

outDir 옵션 추가 후 컴파일 오류 질문

0

80

1

호출 시그니처 질문

0

72

2

서로소 유니언 타입이 discriminated union과 동의어 인가요?

0

84

2

조건부타입소개 중 함수오버로딩 활용 시 인수의타입과 함수의 반환값의 타입이 깨지는 문제

0

72

1

할인쿠폰 관련하여

0

168

2

프론트엔드에서의 인터페이스활용

0

100

2

안녕하세요 이정환님!

0

97

1

Node.js 설치에 관한 질문입니다.

0

82

2

함수 타입 호출 시그니처

0

63

1

35강. 모듈 보강은 라이브러리 파일을 직접 편집해야 하나요?

0

70

2

인터페이스 문법이 있는데 타입 별칭 문법은 왜 있나요?

0

122

4

마우스 호버 시 정보

0

98

2

vite으로 리액트 빌드하기를 업데이트해주세요.

1

92

2

타입가드를 만들어 사용하는 이유가 궁금합니다.

0

89

2

섹션 12가 너무 어려운데... 정상이겠죠..?

0

142

2

선생님.. 알고리즘도 강의해주시면안되나요

0

105

2

선생님은 어떻게 이런걸 아세요?

0

137

1

type: module

0

102

2

7:17초 업캐스팅 질문이있습니다!

0

84

1

슈퍼타입질문

1

70

2

프로젝트 설치

0

116

2