
Type과 Interface는 TypeScript에서 타입을 정의하는 데 사용되는 방법.
Type:
구조적인 타입:
Type은 주로 기존 타입을 결합하거나 새로운 타입을 만들 때 사용됨.
기존 타입을 조합하여 새로운 타입을 정의할 수 있으며, 복잡한 타입을 만들기에 유용함.
Union, Intersection, Alias 등의 지원:
Type은 유니언 타입, 교차 타입, 타입 별칭 등 다양한 기능을 제공함.
Primitives, Objects, Functions 등 모든 유형을 지원:
모든 종류의 타입을 만들고 조합할 수 있음.
확장 불가능:
이미 존재하는 타입을 확장하는 것은 불가능함.
Interface:
명시적인 타입:
Interface는 주로 객체의 구조를 설명하고 각 멤버의 타입을 명시할 때 사용.
코드를 읽기 쉽게 만들고, 개발자들이 객체의 형태를 이해하기 쉽게 함.
선언 병합(Declaration Merging) 지원:
Interface는 여러 곳에서 동일한 이름의 인터페이스를 선언하여 합칠 수 있음.
구조적인 타입 체크 미지원:
Interface는 구조적으로 타입을 체크하지 않기 때문에 선언된 형태가 일치해야 함.
확장 가능:
다른 인터페이스나 클래스를 확장하여 새로운 인터페이스를 만들 수 있음.
일반적으로, Type은 주로 복잡한 타입을 정의하고 조합할 때 사용되며,
Interface는 주로 객체의 형태를 정의하고 명시할 때 사용됨.
그러나 두 가지 모두 다양한 상황에 따라 선택하여 사용할 수 있음.