تحويل مخطط GraphQL إلى أنواع TypeScript
ولّدوا الأنواع من ملفات .graphql باستخدام codegen
تحويل مخطط GraphQL إلى أنواع TypeScript درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.
المشكلة: انجراف المخطط والأنواع
في مشاريع GraphQL، قد يخرج مخطط الخادم وأنواع TypeScript لدى العميل بسهولة عن التزامن من دون التشغيل الآلي. يحل توليد الشيفرة هذه المشكلة باشتقاق الأنواع مباشرةً من المخطط.
# Without codegen: manual types that drift from schema
interface User { id: string; name: string; } // may not match schemaGraphQL Code Generator
يقرأ @graphql-codegen/cli مخطط GraphQL وينشئ أنواع TypeScript تلقائيًا.
npm install --save-dev @graphql-codegen/cli @graphql-codegen/typescriptإعداد codegen.yml
اضبطوا مصدر المخطط وموقع الإخراج في codegen.yml.
# codegen.yml
schema: "./api/schema.graphql"
generates:
src/generated/types.ts:
plugins:
- typescriptتشغيل المولّد
شغّلوا graphql-codegen لإنشاء أنواع TypeScript من مخططكم.
npx graphql-codegen
# Generates src/generated/types.ts with all schema typesمثال على المخرجات المُنشأة
يحتوي الملف المُنشأ على واجهات TypeScript المطابقة لكل نوع GraphQL في مخططكم.
// src/generated/types.ts (generated)
export type User = {
__typename?: "User";
id: string;
name: string;
email: string;
};
export type Query = {
__typename?: "Query";
user?: Maybe<User>;
};مخطط من نقطة نهاية بعيدة
يمكن لـ Codegen أيضًا جلب المخطط من نقطة نهاية GraphQL مباشرةً باستخدام الاستكشاف.
# codegen.yml with remote schema
schema:
- https://api.example.com/graphql:
headers:
Authorization: "Bearer ${AUTH_TOKEN}"تعيين الأنواع العددية
عيّنوا المقاييس العددية المخصصة في GraphQL إلى أنواع TypeScript ضمن إعدادات codegen.
# codegen.yml
config:
scalars:
DateTime: string
JSON: Record<string, unknown>
Upload: Fileمعالجة التعدادات
تُحوَّل تعداديات GraphQL إلى تعداديات نصية في TypeScript أو إلى أنواع اتحاد، بحسب إعدادات codegen.
# Generated from GraphQL enum Role { ADMIN USER GUEST }
export enum Role {
Admin = "ADMIN",
User = "USER",
Guest = "GUEST",
}القيم غير الخالية وMaybe
تتحول الحقول القابلة للقيمة الخالية في GraphQL إلى Maybe<T>، أي T | null | undefined، في الأنواع المُنشأة، بما يعكس قابلية المخطط للقيمة الخالية.
// GraphQL: name: String (nullable)
// Generated: name?: Maybe<string>
// GraphQL: id: ID! (non-null)
// Generated: id: stringالتكامل مع CI
شغّلوا codegen في CI للتحقق من أن الأنواع المُنشأة محدثة. أفشلوا البناء إذا تغير المخطط دون إعادة التوليد.
# CI: check no drift
npx graphql-codegen --check
# Exits 1 if generated files are out of dateمراجعة: من المخطط إلى الأنواع
يقرأ GraphQL Code Generator مخططكم وينتج أنواع TypeScript تلقائيًا. اضبطوه باستخدام codegen.yml، وشغّلوا graphql-codegen، وادمجوه في CI لمنع انجراف المخطط.
تحقّق سريع
ما الغرض الأساسي من GraphQL Code Generator؟
ما تعلّمتموه
يقضي GraphQL Code Generator على انجراف المخطط والأنواع من خلال إنشاء أنواع TypeScript من مخططكم. اضبطوه باستخدام codegen.yml، وعيّنوا المقاييس العددية المخصصة، وادمجوه في CI لضمان حداثة الأنواع.
الأسئلة الشائعة
هل درس «تحويل مخطط GraphQL إلى أنواع TypeScript» مجاني؟
نعم — نص درس «تحويل مخطط GraphQL إلى أنواع TypeScript» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.
ماذا ستتعلم في «تحويل مخطط GraphQL إلى أنواع TypeScript»؟
ولّدوا الأنواع من ملفات .graphql باستخدام codegen تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟
لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «تحويل مخطط GraphQL إلى أنواع TypeScript»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟
نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تحويل مخطط GraphQL إلى أنواع TypeScript
- المحلِّلات محددة الأنواع باستخدام GraphQL Code Generator
- عميل GraphQL محدد الأنواع باستخدام Apollo وurql
- أمان الأنواع من البداية إلى النهاية: سير عمل المخطط أولًا