Earlier quoted context omitted.
I don't think runtime validation is that special. You can bend most languages into this pattern one way or another. The real deal is having an actual compile-time-checked type that resembles a primitive.
Actually what I want is just the reading experience of seeing "public Customer GetById(CustomerId id)" instead of "public Customer GetById(string id)" when only some strings (e.g. 64 chars A-Z and 1-9) are valid customer ids. Compile-time validation would be ideal, but validation at the edges, well before that method, is good enough.
Usually cured by using Value objects. I wish this done more in OO code.
Could it be better supported in these languages? Yes, for sure. But is it true that "these language do not support such a type" at all? No.