Oh, do aliases not get dumped as their original type? So we currently dump `interval` (for example) as `string`?

That does sound like a good argument to take @sgrif's suggested approach: keeping the separate type definition, but using inheritance to make it nearly empty.