The trouble with type is that a trait is not a type.
This is essentially the rationale for my proposal above. A type is a type, and a trait is a trait, a fn is a fn, and a macro is a macro; those names reflect how they're used, they'll make sense to readers, and you would never need to swap one of them for a different one. Conversely, it DOES make sense to swap the different categories of type (struct, enum, union, type alias) with each other.
The only complication is const and static because both of those are used as values, so it seems vaguely plausible that a library might document "this is currently a static but I might change it to a const later".