typescript - GraphQL Codegen - Hur man gör returtypen av en resolver partiell men behåller argumenten som obligatoriska?
Jag använder den här konfigurationsfilen:
overwrite: true
schema: "src/**/*.(resolver|type).ts"
documents: null
generates:
src/graphql/generated/graphql.ts:
plugins:
- "typescript"
- "typescript-resolvers"
config:
typesSuffix: GQL
resolverTypeSuffix: Resolver
Fungerar bra men det är verkligen irriterande att kasta as any as TypeGQL varje gång jag vill delegera en egenskap av det returnerade objektet till en annan resolver.
Här måste jag tvinga att kasta as any eftersom fältet regions saknas, vilket jag vill delegera till dess egen resolver.
export const CountryResolver: CountryResolverGQL<GQLContext> = {
async regions(parent, _args, { dataSources }) {
const regions = await dataSources.placesService.getRegionsFromCountryId(parent.id!)
return regions.map((region) => ({ ...region, country: parent } as any))
}
}
Jag har också försökt lägga till alternativet:
config:
defaultMapper: Partial<{T}>
Men det ändrar också parametrarna för mina resolvers till att vara Partial<Parent> eller något liknande.
Och jag är tvungen att ändra kod som fungerade till:
export const CountryResolver: CountryResolverGQL<GQLContext> = {
async regions(parent, _args, { dataSources }) {
const regions = await dataSources.placesService.getRegionsFromCountryId(parent.id!)
return regions.map((region) => ({ ...region, country: parent as CountryGQL }))
}
}
Hur går jag tillväga för att göra endast returtypen för resolvern delvis?