A type is essentially a set of values

I cannot comment on the accuracy of such a definition, but lately it seems a recurring way of referring to types. Specifically, I found this definition in both the Bartosz's course on type category and principles of functional programming by Martin Odersky.

Odersky goes a step further and defines objects as values of a UDT (i.e., class) type.