반공변성
strictFunctionTypes mode in which function type parameter positions are checked contravariantly instead of bivariantly
함수 파라미터는 반공변적으로 구현하는게 당연한 것 같은데, 왜 그전에는 반공변적으로 동작하지 않았을까
즉 이변적으로 동작했을까
하지막 직관적으로는 공변적으로 타입이 작동하는 게 맞다
그래서 c#이나 scala에서는 공변적이나 반공변성을 위한 문법이 있지만, 이런 구현의 어려움과 복잡성 때문에 이변성을 처음에 택했다
Logger<string | number> 가 오히려 Logger<number> 의 서브타입이 되는 셈입니다. 이런 식으로 동작하는 것을 반공변성
-strictFunctionTypes 를 사용하면 함수의 파라미터가 모두 반공변적으로 동작