عميل GraphQL محدد الأنواع باستخدام Apollo وurql
استخدموا الخطافات والعمليات المولّدة لإنشاء استعلامات آمنة من ناحية الأنواع
عميل GraphQL محدد الأنواع باستخدام Apollo وurql درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.
مشكلة كتابة أنواع العميل
تعيد عملاء GraphQL مثل Apollo وurql بيانات من النوع any افتراضيًا. ينشئ Codegen خطافات وعمليات موصوفة بالأنواع تجعل الاستعلامات آمنة تمامًا من ناحية الأنواع.
// Without codegen: data is any
const { data } = useQuery(GET_USER);
data.user; // any — no safetyالمكوّن الإضافي للعمليات في Apollo
أضف @graphql-codegen/typescript-react-apollo لإنشاء خطافات React مُنمّطة لكل عملية في ملفات .graphql الخاصة بكم.
npm install --save-dev @graphql-codegen/typescript-operations
npm install --save-dev @graphql-codegen/typescript-react-apolloملف codegen.yml لخطافات Apollo
وجّه codegen إلى ملفات عمليات .graphql وإلى المخطط لإنشاء خطافات مُنمّطة.
# codegen.yml
documents: "src/**/*.graphql"
generates:
src/generated/operations.ts:
plugins:
- typescript
- typescript-operations
- typescript-react-apolloكتابة استعلام مُنمّط
اكتب عملية GraphQL في ملف .graphql، واستخدم الخطاف المُولَّد في المكوّن الخاص بكم.
# src/queries/GetUser.graphql
query GetUser($id: ID!) {
user(id: $id) {
id
name
email
}
}استخدام الخطاف المُولَّد
استورد الخطاف المُولَّد والمُنمّط بالكامل؛ فالمتغيرات والبيانات وحالة التحميل والخطأ كلها آمنة من ناحية TypeScript.
import { useGetUserQuery } from "./generated/operations";
function UserCard({ id }: { id: string }) {
const { data, loading } = useGetUserQuery({ variables: { id } });
if (loading) return <p>Loading...</p>;
return <p>{data?.user?.name}</p>; // data.user: User | null — typed
}urql مع Codegen
بالنسبة إلى urql، استخدم @graphql-codegen/typescript-urql لإنشاء أغلفة خطافات مُنمّطة.
npm install --save-dev @graphql-codegen/typescript-urql
# Similar codegen.yml configuration, generates useGetUserQuery for urqlTypedDocumentNode
النهج الأقل مستوى: استخدم TypedDocumentNode من @graphql-typed-document-node/core لإرفاق معلومات الأنواع بعُقد المستندات من دون خطافات خاصة بإطار عمل محدد.
import { TypedDocumentNode } from "@graphql-typed-document-node/core";
const GetUserDoc: TypedDocumentNode<GetUserQuery, GetUserQueryVariables> = gql`...`;
// Works with Apollo, urql, and any GraphQL client that supports itأنواع الأجزاء
ينشئ Codegen أنواعًا لأجزاء GraphQL أيضًا، مما يتيح تركيب الأجزاء بأمان من ناحية الأنواع داخل المكوّنات.
# UserFields.graphql
fragment UserFields on User {
id
name
}
# Generated: UserFieldsFragment type — use as prop typeالطفرات المُنمّطة
ينشئ Codegen كذلك خطافات طفرات مُنمّطة، مع متغيرات وبيانات نتائج مُنمّطة.
import { useCreateUserMutation } from "./generated/operations";
const [createUser, { loading }] = useCreateUserMutation();
// createUser({ variables: { input: { name, email } } })
// — variables are fully typedمزامنة العمليات
عند تغيّر المخطط، أعِد تشغيل codegen. وتكشف إضافة خطوة validate-queries عن العمليات التي تشير إلى حقول محذوفة أو معاد تسميتها.
npx graphql-codegen --check
# or with graphql-inspector:
npx graphql-inspector validate ./src/**/*.graphql ./api/schema.graphqlمراجعة: عملاء GraphQL المُنمّطون
ينشئ Codegen خطافات مُنمّطة لـ Apollo وurql انطلاقًا من ملفات عمليات .graphql الخاصة بكم. ويوفر ذلك أمانًا كاملًا من ناحية الأنواع للمتغيرات وبيانات الاستعلام وبُنى الأجزاء، من دون الحاجة إلى صيانة الأنواع يدويًا.
تحقق سريع
ما الذي يقدمه خطاف GraphQL مُنمّط ومُولَّد مقارنةً باستخدام مستند خام؟
ما تعلمتموه
يستخدم عملاء GraphQL المُنمّطون codegen لإنشاء خطافات ذات متغيرات وبيانات مُنمّطة بالكامل في Apollo وurql. اكتبوا العمليات في ملفات .graphql، وشغّلوا codegen، واحصلوا على أمان شامل من ناحية الأنواع، من المخطط إلى المكوّن.
الأسئلة الشائعة
هل درس «عميل GraphQL محدد الأنواع باستخدام Apollo وurql» مجاني؟
نعم — نص درس «عميل GraphQL محدد الأنواع باستخدام Apollo وurql» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.
ماذا ستتعلم في «عميل GraphQL محدد الأنواع باستخدام Apollo وurql»؟
استخدموا الخطافات والعمليات المولّدة لإنشاء استعلامات آمنة من ناحية الأنواع تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟
لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «عميل GraphQL محدد الأنواع باستخدام Apollo وurql»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟
نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تحويل مخطط GraphQL إلى أنواع TypeScript
- المحلِّلات محددة الأنواع باستخدام GraphQL Code Generator
- عميل GraphQL محدد الأنواع باستخدام Apollo وurql
- أمان الأنواع من البداية إلى النهاية: سير عمل المخطط أولًا