If I'm using normal English language I do not need to declare PhoneNumber as int to use it. For example if I ask my friend Sam to give me his phone number I say:
"Sam give me the phonenumber"
I wouldn't say>
"Char(20) Sam give me the int phoneNumber"
Why do we have to specify data type at all?
Pop over to MathOverflowMathOverflow or Theoretical Computer Science and read for a while to get an idea of how humans communicated alogrithms with one another when they want to insure that there is no possibility of misunderstanding. Or read the standard for some mature programming language.
You'll find that defining what kinds of values are allowed to a term is part of really precise communications practice even human-to-human.
What you've noticed is that day-to-day interactions are fairly regular and human are pretty fault tolerant, so a misunderstanding about phone numbers is generally avoided by the shared knowledge of the participants.
But have you ever tried to take down a phone number for someone in another country? Did they tell you explicitly how many times to push zero to get to international addressing? Did they tell you their country code? Did you recognize it as such? How many digits did you expect? How many did you get? Did you know how to group the digits? Or even if the grouping has significance?
Suddenly the problem is a lot harder and you probably took a lot more care to explicitly check that the number recieved was understood the way the sender meant it.