TypeScript에서 Type vs Interface

BOONG GI JUNG·2024년 1월 27일
0

FrontEnd

목록 보기
19/27

타입(Type) | 인터페이스(Interface) 차이점

타입(Type) vs. 인터페이스(Interface)

타입(Type)
타입은 변수, 매개변수, 반환값 등의 다양한 곳에서 사용할 수 있는 자체적인 타입을 정의할 때 사용됩니다.
유니온 타입(Union types), 인터섹션 타입(Intersection types), 리터럴 타입(Literal types) 등을 사용하여 복잡한 타입을 정의할 수 있습니다.

인터페이스(Interface)
인터페이스는 주로 객체의 구조를 정의하고 클래스나 객체가 해당 구조를 따르도록 강제할 때 사용됩니다.
클래스가 인터페이스를 구현(Implements)하거나 객체가 인터페이스를 따르도록 할 수 있습니다.

확장성(Extensibility)

타입(Type)
타입은 확장이 불가능하며, 이미 정의된 타입을 수정하거나 확장할 수 없습니다. 기존 타입을 사용할 때 유용합니다.

인터페이스(Interface)
인터페이스는 다른 인터페이스를 확장(Extend)하여 새로운 속성이나 메서드를 추가할 수 있습니다. 이를 통해 코드 재사용성과 확장성을 증가시킬 수 있습니다.

구조적 타이핑(Structural Typing)

타입(Type)
타입은 구조적으로 타입 호환성을 검사하지 않습니다. 이름이 다르더라도 구조가 같으면 호환됩니다.

인터페이스(Interface)
인터페이스는 구조적으로 타입 호환성을 검사합니다. 즉, 인터페이스의 구조가 일치하는 경우에만 호환됩니다.

확장성(Type Extension)

타입(Type)
타입 별칭(Type Alias)을 사용하여 기존 타입에 별칭을 지정하거나 유용한 타입 패턴을 정의할 수 있습니다.

인터페이스(Interface)
인터페이스는 상속(Extends)을 통해 다른 인터페이스를 확장할 수 있으며, 이를 사용하여 인터페이스 간의 관계를 설정할 수 있습니다.

결론

간단하게 말하면, 타입은 주로 변수 및 일반적인 데이터 구조에 사용되며, 구조적 호환성에 중점을 두고 확장 불가능합니다. 반면에 인터페이스는 주로 객체의 구조를 정의하고 클래스나 객체 간의 관계를 확립하고자 할 때 사용되며, 구조적 호환성을 강조하고 확장 가능합니다. 선택은 사용 사례와 코드 구조에 따라 다를 수 있으며, 때로는 둘을 혼용하여 최상의 유연성을 확보하는 것이 좋습니다.

profile
새로운 기술을 즐기는 라이프 하루에 한번 포스팅하기!

0개의 댓글