ScriptsMay 23, 2026·3 min read

TypeGraphQL — Build GraphQL APIs with TypeScript Classes and Decorators

TypeGraphQL is a framework for creating GraphQL schemas and resolvers using TypeScript classes, decorators, and type metadata to eliminate schema duplication and boilerplate.

Agent ready

This asset can be read and installed directly by agents

TokRepo exposes a universal CLI command, install contract, metadata JSON, adapter-aware plan, and raw content links so agents can judge fit, risk, and next actions.

Native · 98/100Policy: allow
Agent surface
Any MCP/CLI agent
Kind
Skill
Install
Single
Trust
Trust: Established
Entrypoint
TypeGraphQL Overview
Universal CLI install command
npx tokrepo install 1fa4dd0f-56a2-11f1-9bc6-00163e2b0d79

Introduction

TypeGraphQL is a code-first GraphQL framework for TypeScript that lets developers define schemas using classes and decorators. By leveraging TypeScript's type system and reflect-metadata, it generates the GraphQL schema from your code, ensuring the API types and resolver signatures stay in sync without maintaining a separate SDL file.

What TypeGraphQL Does

  • Generates GraphQL schemas from TypeScript classes annotated with @ObjectType, @Field, and @InputType
  • Defines resolvers using @Query, @Mutation, and @Subscription decorators on class methods
  • Validates input automatically using class-validator decorators on input types
  • Supports middleware, authorization guards, and dependency injection at the resolver level
  • Integrates with Apollo Server, GraphQL Yoga, Express, Fastify, and other GraphQL servers

Architecture Overview

TypeGraphQL uses the reflect-metadata API to read TypeScript type information at runtime, then transforms decorated classes into a GraphQL schema using the graphql-js library. Resolvers are instantiated through a configurable dependency injection container (compatible with TypeDI, tsyringe, and others). Middleware functions wrap resolver execution in an onion-like chain, and authorization checks run before resolver methods via @Authorized decorators.

Self-Hosting & Configuration

  • Enable experimentalDecorators and emitDecoratorMetadata in tsconfig.json
  • Import reflect-metadata at the application entry point before any TypeGraphQL code
  • Call buildSchema() with resolver classes to produce a GraphQL schema object
  • Pass the built schema to any compatible GraphQL server (Apollo Server, Yoga, etc.)
  • Configure a DI container via the container option in buildSchema for dependency injection

Key Features

  • Single source of truth: TypeScript types define both the GraphQL schema and resolver signatures
  • Built-in input validation via class-validator with automatic error formatting
  • Authorization decorators with role-based and custom auth checker functions
  • Generic types, interfaces, and inheritance for reusable schema patterns
  • Subscription support with filtering and topic-based pub/sub integration

Comparison with Similar Tools

  • Pothos (GraphQL Pothos) — code-first schema builder using a fluent API; TypeGraphQL uses class decorators and OOP patterns
  • Nexus — code-first schema construction with a chainable API; TypeGraphQL relies on TypeScript decorators and metadata
  • SDL-first approach — writing .graphql files separately; TypeGraphQL keeps types and resolvers co-located in code
  • GraphQL Code Generator — generates TypeScript types from existing SDL; TypeGraphQL works in the opposite direction
  • tRPC — type-safe RPC without GraphQL; TypeGraphQL provides a full GraphQL API layer with schema introspection

FAQ

Q: Do I still need to write a .graphql schema file? A: No. TypeGraphQL generates the GraphQL schema from your TypeScript classes and decorators. You can optionally emit the SDL for documentation.

Q: Can I use TypeGraphQL with Prisma? A: Yes. Community integrations like typegraphql-prisma auto-generate TypeGraphQL types from your Prisma schema for rapid CRUD API development.

Q: Does TypeGraphQL support subscriptions? A: Yes. Use the @Subscription decorator with topic and filter functions, compatible with graphql-subscriptions or any PubSub implementation.

Q: How does it handle N+1 query problems? A: TypeGraphQL integrates with DataLoader through middleware or field resolvers to batch and cache database queries automatically.

Sources

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets