Strongly Typed Identifiers in Swift
We implement the
HashableandEquatableprotocols so we can use these identifiers in Sets and as Dictionary keys.We use
RawRepresentableso we get the Equatable implementation for free, Hashable is implemented in a protocol extension[…][…]
Haskell has a language feature that implements this pattern of wrapping an existing type to create a new type. It is called:
newtype.That would also be nice to have in Swift. It looks similar to
typealias, but creates a new type, instead of just an alias.
Otherwise there is a lot of boilerplate. He presents several ways of reducing it.