Skip to content

Methods not included when using 'extend' #19

Description

@jahredhope

Firstly, thanks for this tool. It's been really great to have my resolvers strongly typed with minimal effort. I've recently been trying out a new modular pattern which has led me to a problem.

Problem

When I use extend to break up my type definitions I don't see the extended values in the type.

Example

Prior to splitting the modules out I have a TypeScript type that accurately describes the resolvers for Query.

type Dog {
  imageUrl: String!
}

type Query {
  dogs(limit: Int): [Dog!]
}
export interface GQLQueryTypeResolver<TParent = undefined> {
  dogs?: QueryToDogsResolver<TParent>;
}

But as I want to add more to the schema I look to add something like:

type Cat {
  imageUrl: String!
}

type Query {
  cats(breed: String!, limit: Int): [Cat!]
}

Which of-course isn't valid, as I've now defined Query twice.

To keep the code nice and clean I give the Query a base definition, and use extend in the seperate modules:

type Query {
  _empty: String
}
extend type Query {...

However, now the Query definition shows only _empty and not the extended values:

export interface GQLQueryTypeResolver<TParent = undefined> {
  _empty?: QueryTo_emptyResolver<TParent>;
}

Ideal

Ideally I want to see something like below. Is this possible? If not is there a reason the extended types shouldn't be concatenated together?
If it's not currently possible, and it's not a terrible idea would you be open to a PR?

export interface GQLQueryTypeResolver<TParent = undefined> {
  _empty?: QueryTo_emptyResolver<TParent>;
  cats?: QueryToCatsResolver<TParent>;
  dogs?: QueryToDogsResolver<TParent>;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions