Is there a way to define a custom data type that only allows certain values?

For instance, I would like to create a datatype of SIZE which could hold values of SMALL, MEDIUM, LARGE exclusively. I figure I could do this through making constants for each that translate to 1, 2, and 3 and then doing SIZE as a byte, but I would prefer the more streamlined method.

Thank you.