dotansimha/graphql-code-generator-community

TypeGraphQL Generator with Union type fails with error

Open

#121 aberto em 5 de abr. de 2021

Ver no GitHub
 (2 comments) (2 reactions) (0 assignees)TypeScript (195 forks)github user discovery
help wanted

Métricas do repositório

Stars
 (136 stars)
Métricas de merge de PR
 (Métricas PR pendentes)

Description

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

Guia do colaborador