That is because typing in this case is converting a semantic (run time) property into a trivial property (T/F).
It is just making a trade off that is often a reasonable pragmatic default, but if taken as an absolute truth, can lead to brittle systems stuck in concrete.
Not all problems can be reduced to decision problems, which is what a trivial property is.
For me looking at how algebraic data types depend on a sum operation that uses either tagged unions or disjoint unions is a useful lens into the limits.
Note that you can use patterns like ports and adapters which may help avoid some of that brittleness, especially with anti-corruption layers in more complex systems/orgs or where you don’t have leverage to enforce contracts.
But yes if you can reduce your problems to decision problems where you have access to both T and F via syntactic or trivial semantics you should.
But when you convert pragmatic defaults to hard requirements you might run into the edges.