Contravariance

Creator
Creator
Alan JoAlan Jo
Created
Created
2021 Aug 17 4:6
Editor
Editor
Alan JoAlan Jo
Edited
Edited
2023 Apr 25 1:54
반공변성
strictFunctionTypes mode in which function type parameter positions are checked contravariantly instead of bivariantly

함수 파라미터는 반공변적으로 구현하는게 당연한 것 같은데, 왜 그전에는 반공변적으로 동작하지 않았을까

즉 이변적으로 동작했을까
하지막 직관적으로는 공변적으로 타입이 작동하는 게 맞다
그래서 c#이나 scala에서는 공변적이나 반공변성을 위한 문법이 있지만, 이런 구현의 어려움과 복잡성 때문에 이변성을 처음에 택했다
 
 
 
 
 
 
 
Logger<string | number> 가 오히려 Logger<number> 의 서브타입이 되는 셈입니다. 이런 식으로 동작하는 것을 반공변성
 
-strictFunctionTypes 를 사용하면 함수의 파라미터가 모두 반공변적으로 동작
 
 
 
 
 

Recommendations