You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从TypeScript解析器生成GraphQL Schema?求相关工具库

从TypeScript解析器生成GraphQL Schema的可行方案

你提到的反向生成思路确实合理,目前有几个成熟的库支持从TypeScript代码(包含解析器逻辑)生成GraphQL Schema,避免了Schema和TS类型重复定义的冗余:

1. TypeGraphQL

这是最流行的方案之一,通过装饰器标记解析器类、方法和返回类型,编译时自动生成对应的GraphQL Schema:

import { ObjectType, Query, Resolver, buildSchema } from "type-graphql";

@Resolver()
class QueryResolver {
  // 用@Query装饰器标记这是Query字段,指定返回类型为String
  @Query(() => String)
  hello() {
    return "world!";
  }
}

// 生成GraphQL Schema
const schema = await buildSchema({
  resolvers: [QueryResolver],
});

2. Nexus Schema(@nexus/schema)

Nexus提供了一套TS-first的DSL,让你在定义解析逻辑的同时直接描述GraphQL类型,最终自动生成Schema:

import { queryType, makeSchema } from '@nexus/schema'

const Query = queryType({
  definition(t) {
    // 定义hello字段,指定返回类型为string,同时编写解析逻辑
    t.string('hello', {
      resolve: () => 'world!'
    })
  }
})

// 生成Schema
const schema = makeSchema({
  types: [Query],
})

补充说明

你提到的直接从typeof resolvers生成Schema的方式,由于TypeScript类型仅存在于编译阶段,运行时无法直接读取,所以现有工具大多通过**运行时标记(装饰器/DSL)**的方式保留类型信息,从而实现解析器到Schema的生成。这类工具不仅能生成Schema,还能自动导出对应的TS类型,完全覆盖你想要的"减少重复代码"的需求。

内容的提问来源于stack exchange,提问作者Liam Pillay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 16:53:24