无法从 TypeScript 反射系统推断 GraphQL 类型

Posted

技术标签:

【中文标题】无法从 TypeScript 反射系统推断 GraphQL 类型【英文标题】:Unable to infer GraphQL type from TypeScript reflection system 【发布时间】:2020-12-11 10:12:51 【问题描述】:

我正在尝试创建一个警报类,如下所示:

@ObjectType()
export class Alert 
  @Field()
  status: 'error' | 'success' | 'warning' | 'info' | undefined

  @Field(() => [String])
  messages: string[];

但是,它给了我以下错误消息:

错误:。 您需要为“警报”类的“状态”提供显式类型。

【问题讨论】:

【参考方案1】:

'error' | 'success' | 'warning' | 'info' | undefined 创建一个类型并将其添加到字段定义中,如下所示: @Field(() => StatusType)

它基本上是在抱怨它无法推断该字段的类型,因为它不是原始类型,只要字段是对象或其他用户定义的类型,您就需要像我描述的那样提供类型信息

【讨论】:

知道有没有办法用标准类型做到这一点? typegraphql 似乎希望一切都成为一个装饰的 @ObjectType() 类。手动定义类型会在类型检查器中引发错误 不幸的是,据我所知,它似乎不允许这样做,但如果你找到一种方法让标准类型为其工作,我会很感兴趣

以上是关于无法从 TypeScript 反射系统推断 GraphQL 类型的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript 中的类型推断在特殊用例中无法正常工作

TypeScript 无法在扩展语法函数调用中推断数组类型

使用gradle时无法推断groovy类路径

TypeScript 是不是可以从动态对象中推断出键?

从类型的默认参数推断 TypeScript 类型

typescript 从子类调用的构造函数参数推断类型