# Type Aliases An `alias` is an alternative name for some type. It is useful as either a local rename or as a way to constrain types without overhead. An alias _cannot_ have a type constructor. The power of an alias comes from the fact that within the scope of the alias definition, the alias and its bound type are treated as identical_. ``` alias Username := String fn username: (candidate: String) => Either[InvalidUsername, Username] -- do validation... and maybe it passes... right(candidate) end fn instance Show[Username] fn show: (value: Username) => String value end fn end instance end alias ```