upvote
A sharp edge is writing meta typesystem code infolving covariance, invariance etc

Saw that in a typescript repository

It's ok when it's part of a very specific library, it's not ok using it as part of usual project code

reply
What is the significant difference to Java? In C# you would write something like Foo<out Bar> instead of Foo<? extends Bar> or some such thing.
reply
In c# you can't be generic over generic types. In java you can. Also enums can't implement interfaces.
reply
> A sharp edge is writing meta typesystem code infolving covariance, invariance etc

Like in Java? C# has its own sharp edges (like most or all languages), but it's almost disingenuous to bring a feature that is much more complex and weird in Java as an example.

reply