Skip to content

TypeScript Covariant 202101

Yongku cho edited this page Jan 10, 2021 · 12 revisions

단어 해석

  • 공변성(Covariant)
  • 반공변성(Contravariant)

분리

  • variant: 변종, 이형
  • co- (prefix): 함께, 같이
    • joint, together, with이라는 의미
    • 출처
  • contra- (prefix): 반대
    • against, opposite라는 의미
    • 출처

변성

출처

타입 시스템에서는 변성이라는 개념이 있다. List<String>List<Any>와 같이 기저 타입(List)가 같고, 타입 인자(String, Any)가 다른 여러 타입이 어떤 관계가 있는지 설명하는 개념이다.

기호 표기법

출처

  • A ≼ B: A는 B의 서브타입
  • A → B: A타입의 인자를 받아서 B타입을 반환하는 함수 타입
  • x : A: x는 A 타입을 가짐

함수의 인수가 반공변성라는 증명

출처

infer

출처

  • 일반적인 공변성 위치에서는 유니언 타입으로 추론
  • 함수 인수인 반공변성 위치에서는 인터섹션 타입으로 추론

함수의 인수가 반공변성이라는 증명은 있는 데, infer는 왜 인터섹션 타입으로 추론하는가??

Covariant와 Union type, Contravariant와 Intersaction type

https://arxiv.org/pdf/1809.01427.pdf

Clone this wiki locally