title: Can you make a graphql type both an input and output type?
body: <p>I have some object types that I'd like to use as both input and output - for instance a currency type or a reservation type.</p>
  
  <p>How do I define my schema to have a type that supports both input and output - I don't want to duplicate code if I don't have to.  I'd also prefer not to create duplicate input types of things like currency and status enums.</p>
  
  <pre><code>export const ReservationInputType = new InputObjectType({
    name: 'Reservation',
    fields: {
      hotelId: { type: IntType },
      rooms: { type: new List(RoomType) },
      totalCost: { type: new NonNull(CurrencyType) },
      status: { type: new NonNull(ReservationStatusType) },
    },
  });
  
  export const ReservationType = new ObjectType({
    name: 'Reservation',
    fields: {
      hotelId: { type: IntType },
      rooms: { type: new List(RoomType) },
      totalCost: { type: new NonNull(CurrencyType) },
      status: { type: new NonNull(ReservationStatusType) },
    },
  });
  </code></pre>