Since classes, structs and enums all has constructors, properties and computed properties, how should I reason when choosing between them?
For starters, Classes are pass-by-reference and Structs are pass-by-copy.
enums
are still a special type to specify, well, enumerations. They should be used just like before.
In general, the choice of Class vs Structs shouldn't be much different than before. Classes are still fit for larger/complex objects and Structs are good for small, isolated model objects. The fact that structs have protocols and such now should just serve to simplify your code and make it more efficient.