Richard Rost used a Short Text data type for his UPC but you've learned from the start that a field that contains only numbers warrants a Numeric Datatype.
Just the opposite. If you are not going to do arithmetic with a "number", it should be stored as text. a Bar Code is a CODE, not a number. The code just happens to contain only numeric characters but it is not limited to only numeric characters.
All numeric data types have limits on the size of the value they will hold. For example:
Integer max = 2,147,483,647
Floating point max = 100,000,000,000
The old version of the ISBN barcode is 10 digits but the new version is 13. The old version would fit in a Floating point field but only some would fit in an Integer. The new version would not fit in either of these numeric data types.
The point is - YOU do not control the format of these CODES (not numbers) and just because they happen to be numeric today, doesn't mean they will be numeric tomorrow. This is why Richard Rost used a text data type. It is called defensive programming and all professionals practice it.