I feel like enums/variants/tagged unions are underexplored in dynamically typed languages.
As soon as you see a pattern match for a given enum variant (e.g. colour::RED), your can IDE can be helpful if the enum definition changes. Normally I only get this with static typing.