As far as I know this:
Typed address mode means that @x generates "pointer to x" as type. "Pointer" is compatible with every pointer type and that doesn't change in Typed address mode.
If you don't want confusing type conversions, don't use "pointer", but always "pointer to something".
A classic trick is to define it as pointer to byte or an empty record (in the latter case sizeof=0 then sets it clearly apart).