Different fields for different contact types

Different fields for different contact types

My business has three types of contacts.  We need to store different data for the contact depending on what type of contact it is. Is there a way to create custom fields that apply only to certain "types" of contacts (with the type defined by a tag or maybe a different custom field)? So if I'm looking  at a Type A contact I would see one set of custom fields, and if looking at a Type B contact I would see a different set of custom fields?  I suspect the answer is no, but maybe there's a work around that would get me something that's close to this? I can't imagine others don't also have this issue. 
Thanks for any help anyone can provide!