dotansimha/graphql-code-generator-community

TypeGraphQL Generator with Union type fails with error

Open

#121 ouverte le 5 avr. 2021

Voir sur GitHub
 (2 commentaires) (2 réactions) (0 assignés)TypeScript (195 forks)github user discovery
help wanted

Métriques du dépôt

Stars
 (136 stars)
Métriques de merge PR
 (Métriques PR en attente)

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

Guide contributeur