TS에는 인터페이스라는 것이 있다. 문법 자체는 타입 별칭과 굉장히 비슷하다. 예시를 하나 보자.
type으로 타입을 정의할 때와 똑같이 타입을 정의해주면 된다. 단, 인터페이스는 = 연산자를 사용하지 않는다.
차이점
우선, 유니온 타입이 안된다.
또한, 타입을 정의할 때 한 가지 타입으로만 정의해야 한다.
따라서, 인터페이스 타입과 다른 타입을 같이 사용하고 싶다면 다음과 같이 사용해야 한다.
인터페이스 합치기
타입 별칭과 또 다른 차이점으로는 인터페이스 합치기가 있다.
Person이라는 인터페이스 두 개를 만들고 하나는 name이라는 프로퍼티를, 다른 하나에는 age라는 프로퍼티를 넣었다.
그리고 해당 타입의 객체를 생성하였더니 name과 age 프로퍼티를 모두 사용할 수 있었다.
그렇다면 재정의도 가능할까?
아쉽게도 재정의는 되지 않는다. 기존에 정의한 프로퍼티와 동일한 타입으로는 작성할 수 있지만, 다른 타입으로 정의할 수 없으며 심지어 서브타입도 불가능하다.
선언 합침에 경우 많이 사용하진 않지만, 기존에 설정한 인터페이스 혹은 라이브러리의 인터페이스가 부실한 경우에 보강해주는 용도로 사용된다.
인터페이스 확장
유니온 타입은 없지만 인터페이스에는 타입 확장이라는 기능이 있다.
확장을 하며 이렇게 프로퍼티를 새로 지정해줄 수 있다.
단, 새로 지정할 때 해당 프로퍼티는 상속받는 타입의 서브타입이어야만 한다.
또한, 확장 대상은 꼭 인터페이스가 아니어도 된다.
마지막으로 유니온 타입은 안 되지만 다중 상속이 가능하다.
참고자료
한 입 크기로 잘라먹는 타입스크립트(TypeScript)
한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런
이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻♀️로 만들어드립니다., 프론
www.inflearn.com
'언어 > TypeScript' 카테고리의 다른 글
접근 제어자 (0) | 2024.08.29 |
---|---|
클래스 (0) | 2024.08.29 |
타입 가드 (0) | 2024.08.25 |
함수 타입의 호환성과 오버로드 (0) | 2024.08.23 |
TypeScript 환경 설정 (2) | 2024.08.22 |