0Pricing
TypeScript Academy · Ders

GraphQL Kod Üreticisiyle Türlendirilmiş Çözücüler

Doğru girdi ve dönüş türleriyle çözücüler yazın

GraphQL Kod Üreticisiyle Türlendirilmiş Çözücüler, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.

Çözümleyici Türlendirme Sorunu

GraphQL çözümleyicileri sıradan işlevlerdir, ancak tür belirtilmiş imzalar olmadan yanlış yapılar döndürmek kolaydır. Kod üretimi, doğru dönüş değerlerini zorunlu kılan çözümleyici türleri oluşturur.

// Without typed resolvers — any type allowed
const userResolver = async (_, { id }) => fetchUser(id);

Çözümleyiciler Eklentisini Ekleme

Çözümleyici eşlemesi türleri oluşturmak için @graphql-codegen/typescript-resolvers paketini yükleyip yapılandırın.

npm install --save-dev @graphql-codegen/typescript-resolvers

Çözümleyiciler için codegen.yml

Çözümleyici eklentisinin çıktısını temel TypeScript türlerinin yanına ekleyin.

# codegen.yml
generates:
  src/generated/types.ts:
    plugins:
      - typescript
  src/generated/resolvers.ts:
    plugins:
      - typescript-resolvers

Oluşturulan ResolverMap'i Kullanma

Tam tür güvenliği sağlamak için oluşturulan Resolvers türünü çözümleyici eşlemesi nesnenize uygulayın.

import { Resolvers } from "./generated/resolvers";

const resolvers: Resolvers = {
  Query: {
    user: async (_, { id }) => fetchUser(id),
    // Return type enforced: must match User schema
  },
};

Bağlam Türlendirmesi

Çözümleyici işlevlerinin türü belirtilmiş bir bağlam nesnesi alması için bağlam türünüzü Resolvers genel türüne geçirin.

interface Context { db: Database; user?: AuthUser; }

// codegen.yml
config:
  contextType: "src/context#Context"

// Generated: Resolvers<Context>
const resolvers: Resolvers<Context> = {
  Query: {
    me: (_, __, ctx) => ctx.user, // ctx: Context
  },
};

Eşleyici Türleri

Eşleyici türleri, GraphQL türlerini dahili model türlerinizle eşlemenize olanak tanır; böylece çözümleyiciler GraphQL çıktı türleri yerine alan nesnelerinizi döndürebilir.

# codegen.yml
config:
  mappers:
    User: "src/models#UserModel"

Alan Çözümleyicilerinin Türlendirilmesi

Türlerdeki tek tek alan çözümleyicilerinin de türleri belirtilir; buna üst nesne ve bağlam bağımsız değişkenleri dahildir.

// Typed field resolver on User type
const resolvers: Resolvers<Context> = {
  User: {
    fullName: (parent) => `${parent.firstName} ${parent.lastName}`,
    // parent is UserModel (from mapper)
  },
};

Türü Belirtilmiş Değişiklik İşlemleri

Değişiklik işlemi çözümleyicileri, şema girdi türlerinden türetilen türü belirtilmiş girdi bağımsız değişkenlerini alır.

// Schema: createUser(input: CreateUserInput!): User!
const resolvers: Resolvers = {
  Mutation: {
    createUser: (_, { input }) => {
      // input: CreateUserInput — fully typed
      return createUser(input.name, input.email);
    },
  },
};

Türü Belirtilmiş Abonelikler

Abonelik çözümleyicilerinde, her ikisinin de türleri kod üretimi tarafından belirtilen bir subscribe işlevi ve bir resolve işlevi bulunur.

const resolvers: Resolvers = {
  Subscription: {
    messageAdded: {
      subscribe: () => pubsub.asyncIterator("MESSAGE_ADDED"),
      resolve: (payload) => payload.messageAdded, // typed
    },
  },
};

Kod Üretimini Eşzamanlı Tutma

Şema değiştiğinde çözümleyici türlerini yeniden oluşturmak için bir derleme öncesi veya işleme gönderme öncesi kancası ekleyin; böylece güncel olmayan türlerin üretime ulaşmasını önleyin.

// package.json
{
  "scripts": {
    "predev": "graphql-codegen",
    "prebuild": "graphql-codegen"
  }
}

Özet: Türü Belirtilmiş Çözümleyiciler

typescript-resolvers kod üretimi eklentisi, tüm GraphQL çözümleyicilerinizde doğru dönüş yapılarını, bağımsız değişken türlerini ve bağlam yapısını zorunlu kılan bir Resolvers türü oluşturur.

Hızlı Kontrol

contextType yapılandırma seçeneği kod üretiminde ne işe yarar?

Öğrendikleriniz

Kod üretimiyle türleri belirtilmiş GraphQL çözümleyicileri, tüm çözümleyici eşlemeniz genelinde doğru dönüş türlerini, bağımsız değişken yapılarını ve bağlam nesnelerini zorunlu kılar. Alan nesneleri için eşleyici türlerini kullanın ve ayrışmayı önlemek için kod üretimini derleme iş akışınızda tutun.

Sıkça Sorulan Sorular

“GraphQL Kod Üreticisiyle Türlendirilmiş Çözücüler” dersi ücretsiz mi?

Evet — “GraphQL Kod Üreticisiyle Türlendirilmiş Çözücüler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.

“GraphQL Kod Üreticisiyle Türlendirilmiş Çözücüler” dersinde ne öğreneceğim?

Doğru girdi ve dönüş türleriyle çözücüler yazın TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“GraphQL Kod Üreticisiyle Türlendirilmiş Çözücüler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. GraphQL Şemasından TypeScript Türlerine
  2. GraphQL Kod Üreticisiyle Türlendirilmiş Çözücüler
  3. Apollo ve urql ile Türlendirilmiş GraphQL İstemcisi
  4. Uçtan Uca Tür Güvenliği: Önce Şema İş Akışı
← TypeScript Academy Sayfasına Dön