dotansimha/graphql-code-generator-community

TypeGraphQL Generator with Union type fails with error

Aperta

#121 aperta il 5 apr 2021

 (2 commenti) (2 reazioni) (0 assegnatari)TypeScript (195 fork)github user discovery
help wanted

Metriche repository

Star
 (136 stelle)
Metriche merge PR
 (Merge medio 1g 11h) (28 PR mergiate in 30 g)

Descrizione

Describe the bug

When generating TypeGraphQL, using a union type, the type passed to @TypeGraphQL.Field fails with the error: 'Step' only refers to a type, but is being used as a value here. (TS 2693)

To Reproduce Steps to reproduce the behavior:

Run the generation below.

  1. My GraphQL schema:
type PullStep @entity {
  nextSteps: [Step!] @column
  # ...other fields...
}

type PushStep @entity {
  nextSteps: [Step!] @column
  # ...other fields...
}

union Step = PullStep | PushStep
  1. My codegen.yml config file:
generates:
  types.ts:
    plugins:
      - typescript-type-graphql
  1. The output:
import * as TypeGraphQL from 'type-graphql';
export { TypeGraphQL };
export type Maybe<T> = T | null;
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };
export type FixDecorator<T> = T;
/** All built-in and custom scalars, mapped to their actual values */
export type Scalars = {
  ID: string;
  String: string;
  Boolean: boolean;
  Int: number;
  Float: number;
};

@TypeGraphQL.ObjectType()
export class PullStep {
  __typename?: 'PullStep';

  @TypeGraphQL.Field(type => [Step], { nullable: true })
  // ^^^^ !!! "'Step' only refers to a type, but is being used as a value here. (TS 2693)" !!!
  // ^^^^
  nextSteps!: Maybe<Array<Step>>;
};

@TypeGraphQL.ObjectType()
export class PushStep {
  __typename?: 'PushStep';

  @TypeGraphQL.Field(type => [Step], { nullable: true })
  // ^^^^ !!! "'Step' only refers to a type, but is being used as a value here. (TS 2693)" !!!
  // ^^^^
  nextSteps!: Maybe<Array<Step>>;
};

export type Step = PullStep | PushStep;

Expected behavior

No error. To fix this, it probably needs a union type generated: https://typegraphql.com/docs/unions.html

Environment:

  • OS: Linux
  • @graphql-codegen/...: 1.21.3
  • NodeJS: 14

Additional context

Guida contributor