DROP TYPE will remove a user type from the system catalogs.
Only the owner of a type can remove it.
It is the user's responsibility to remove any operators, functions, aggregates, access methods, subtypes, and tables that use a deleted type. However, the associated array data type (which was automatically created by CREATE TYPE) will be removed automatically.
If a built-in type is removed, the behavior of the server is unpredictable.
A DROP TYPE statement exists in SQL99. As with most other "drop" commands, DROP TYPE in SQL99 requires a "drop behavior" clause to select between dropping all dependent objects or refusing to drop if dependent objects exist:
DROP TYPE name { CASCADE | RESTRICT }
PostgreSQL currently ignores dependencies altogether.
Note that the CREATE TYPE command and the data type extension mechanisms in PostgreSQL differ from SQL99.
Read the upstream documentation. For corrections, first check the current version.