There are raw types at least, where it might or might not take type arguments. TypeVars might need type inference to take place to know what they are. But mostly, it's just not architected well - there isn't anything fundamental which should stand in the way of our knowing with certainty the type parameter arity of almost every type in almost every situation, and without having to squeeze our eyes shut and pray before we try to find out.