[Korean FE Article] 타입스크립트의 공변성과 반공변성
글 링크가 잘못 작성되어 재발송합니다 😢
글 링크: https://bit.ly/3q0Pvzm
소개
이번 글은 타입스크립트에서 공변성과 반공변성에 대한 개념을 소개하는 글입니다. 공변성과 반공변성이라는 기본적이지만 생소한 개념에 대해서 이해하기 쉽게 풀어놓은 글입니다. 공변성과 반공변성 개념이 어디서 활용되고 있고 유용하게 쓸 수 있는 경우가 무엇이 있을지 생각하면서 읽는 것도 좋을 것 같습니다 :)
tl;dr
타입과 서브타이핑을 이해하기위해 공변성과 반공변성을 아는 것이 도움이 된다.
서브타이핑
서브 타입이 베이스 타입과 어떤 형태의 대체 가능성에 의해 연결되는 것을 말한다.
대체 가능성은 베이스 타입의 변수가 서브 타입 값도 받아들일 수 있음을 의미한다.
“A는 B의 서브 타입입니다”를 기호
A <: B
로 표현할 수 있다.공변성
S <: P
일 때,T<S> <: T<P>
이면 타입 T는 공변이다.
반공변성
S <: P
일 때T<P> <: T<S>
이면 타입 T 는 반공변이다.
함수 서브타이핑
함수에 대한 서브 타이핑은 파라미터 타입이 반공변이어야 하는 반면 반환 타입은 공변이어야 한다.