title: Return incomplete shapes from resolver with GraphQL Code Generator
body: <p>I use the following convention to let resolvers return partial data, and allow other resolvers complete the missing fields:</p>
  <pre><code>type UserExtra {
    name: String!
  }
  
  type User {
    id: ID!
    email: String!
    extra: UserExtra!
  }
  
  type Query {
    user(id: ID!): User!
    users: [User!]!
  }
  </code></pre>
  <pre class="lang-js prettyprint-override"><code>const getUser = (id: string): { id: string, email: string, extra: { name: string } =&gt; fetchUser(id);
  
  // `fetchUsers` only returns `id` and `email`, but not `extra`
  const getUsers = (): { id: string, email: string }[] =&gt; fetchUsers();
  
  // we can use this function to fetch the extra field for a given user
  const getUserExtra = (id: string): { name: string }  =&gt; fetchUserExtra();
  
  export default {
    Query: {
      user: (parent, args) =&gt; getUser(args.id),
      users: () =&gt; getUsers(),
    },
    User: {
      // here we fetch the `extra` field anytime an `User` is requested
      // in real-life I would check if the query is requesting the `extra`
      // field or not, and only fetch the data if requested by the query
      extra: (parent) =&gt; {
        return getUserExtra(parent.id)
      },
    }
  }
  </code></pre>
  <p>The problem I'm having is that GraphQL Code Generator generates a <code>Resolver</code> type that expects <code>Query#users</code> to return the complete <code>User</code> shape, and of course it's not aware of the fact that even though I return a partial shape from <code>Query#users</code>, thanks to <code>User#extra</code> the client will end up receiving the expected shape nonetheless.</p>
  <p>What's the best approach to handle this case while keeping TS happy?</p>