Is there to change object data to different type?

I know that once you create an object you cannot change its data type. But is there workaround? I want to keep the orientation, animations, position, custom properties etc, but change the data between empty, mesh, armature.