仅使用 typegraphql 中的类型名称定义 arg 类型

Define an arg type using just the typename in typegraphql

我们有一个使用通用类型创建类型的工厂:

export function GenericResolverFactory(props: FactoryProps) {
  @GqlType(`${props.model.name}Response`)
  class ModelPaginatedResponse extends ResponseFactory(props.modelClass) {
    // you can add more fields here if you need
  }

  @GqlInputType(`${props.model.name}CreateInput`)
  class CreateInput extends CreateInputFactory(props.createInput) { }

  @Resolver(_of => props.modelClass, { isAbstract: true })
  abstract class GenericResolver {
    @Mutation(_returns => props.modelClass, { name: `create${startCaseName}` })
    create(@Arg('data') data: CreateInput, @Ctx() _context: UserContext) {
      return this.__getService().create(data);
    }
  }

  return ModelResolverClass;
}

现在我们必须像这样声明输入参数:Arg('input') input: UpdateInput

由于我的类型是使用工厂生成的,因此 类 在(不是运行时?)时不可用。有没有办法引用那些动态生成的输入?有没有办法做这样的事情:Arg('input') input: resolveType('ProductCreateInput')

假设 resolveType returns 一个 class 装饰有 @InputType@Fields:

@Arg('input', type => resolveType('ProductCreateInput')) input: ICreateInput`

你只需要提供一个运行时值作为@Arg装饰器的第二个参数