مولدات الكود · 60دقيقة قراءة
JSON إلى TypeScript: الأنواع المطابقة للواقع
أسرع طريقة للحصول على أنواع TypeScript الصحيحة لواجهة برمجة التطبيقات (API) هي توليدها من الاستجابة التي أرجعتها واجهة برمجة التطبيقات (API) بالفعل. تصف الواجهات المكتوبة بخط اليد الحمولة التي تتوقعها؛ يصف تحويل JSON إلى TypeScript الحمولة المتوفرة لديك، والفجوة بين هاتين الحمولة هي المكان الذي تحدث فيه أعطال وقت التشغيل.
تم التحديث
لماذا تنجرف الأنواع المكتوبة بخط اليد؟
تميل الواجهات المكتوبة من الوثائق أو من الذاكرة إلى التفاؤل. إنهم يضعون علامة على كل شيء موجود، ويفترضون وجود حقل لاغٍ دائمًا، ويفتقدون بهدوء الكائن المتداخل الذي يظهر فقط في الحسابات المميزة. TypeScript ثم يفرض شكلًا لم يعد به الخادم مطلقًا، وتظهر الأسطح `undefined` الأولى في الإنتاج وليس في وقت الترجمة. يؤدي التوليد من استجابات حقيقية إلى عكس العملية: يقوم المترجم بالتحقق من الشكل المرصود بدلاً من الشكل المأمول.
قراءة الملف الذي تم إنشاؤه
يقوم التحويل المفيد بتسمية الكائنات المتداخلة بعد مفاتيحها، ويحافظ على أنواع عناصر المصفوفة سليمة، ويعبر عن عدم اليقين بشكل صريح. انتبه إلى العلامات الثلاثة التي تحمل كل المعنى:
export interface Order {
id: string;
total: number;
coupon?: string; // absent in some responses
shippedAt: string | null; // present but null until shipped
items: Array<OrderItem>;
}
الفرق بين`coupon?: string`و`shippedAt: string | null`ليست تجميلية. اختياري يعني أن المفتاح قد يكون مفقودًا؛ null يعني أن المفتاح موجود بلا قيمة. تقوم واجهات برمجة التطبيقات بالأمرين معًا، غالبًا في نفس الحمولة، ويؤدي دمجهما إلى دفع التحقق من القيمة الفارغة إلى التعليمات البرمجية التي تفترض سلسلة.
استخدام أكثر من عينة
استجابة واحدة تمثل كل ما هو مطلوب. الصق استجابتين أو ثلاثة - من الناحية المثالية واحدة من حساب فارغ وواحدة من حساب كامل - وسوف تكشف المفاتيح الاختيارية عن نفسها: يصبح الحقل المفقود من أي عينة هو `?`، والحقل الذي يكون في بعض الأحيان خاليًا يصبح اتحادًا مع `null`. هذه هي أرخص ترقية متاحة للصحة، وهذا هو السبب وراء ضرورة إعادة إنشاء الأنواع التي تم إنشاؤها عندما يتغير API بدلاً من كتابتها مرة واحدة.
لا تدع أبدًا الواجهة التي تم إنشاؤها هي الوصف الوحيد لواجهة برمجة التطبيقات (API) الخاصة بك. احتفظ بمخطط أو اختبار عقد بجانبه، بحيث يفشل تغيير الخادم في الإنشاء بدلاً من جلسة المستخدم.
حيث تنتمي الأنواع
- مجلد `types/` أو `api/` مخصص، غير متناثر عبر المكونات.
- ملف واحد لكل نقطة نهاية أو لكل مورد، مع تعليق يذكر نقطة النهاية وتاريخ التقاطها.
- ملاحظة التجديد: المكالمة التي أنتجت الحمولة، حتى يتمكن الشخص التالي من تكرارها.
- عملية تصدير تستهلكها كل من طبقة الجلب والمكونات، لذا فإن التغيير يكسر مكانًا واحدًا بالضبط.
قم بتشغيل الوضع الصارم
الأنواع التي تم إنشاؤها لا تؤتي ثمارها إلا عند تمكين `` الصارم ''، لأن هذا هو ما يجعل المفتاح الاختياري خطأً فعليًا عند الوصول إليه مباشرة. قم بإقران الواجهات التي تم إنشاؤها مع `غير معروف` عند حد الجلب وتضييقه قبل الاستخدام: يُرجع `JSON.parse` `أي`، لذلك يجب أن يكون الإرسال إلى الواجهة التي تم إنشاؤها هو النقطة التي تم التحقق من صحتها، وليس المكان الذي تأمل فيه.
أنشئ من الحمولات النافعة التي لن تقوم بتحميلها
استجابات واجهة برمجة التطبيقات (API) هي أكثر ملفات JSON حساسية التي يتعامل معها معظم المطورين - بيانات الحساب، والأوامر، والرموز المميزة. إن تشغيل تحويل JSON إلى TypeScript في المتصفح يعني أن الحمولة يتم تحليلها محليًا ولن يتم نقلها مطلقًا، لذا يمكنك لصق استجابة حقيقية دون تنقيحها أولاً، وتستمر الأداة في العمل دون اتصال بالإنترنت.
JSON إلى TypeScript — الأسئلة المتداولة
كيف أجعل الحقل الذي تم إنشاؤه اختياريًا؟
قم بتضمين عينة ثانية حيث يكون هذا المفتاح غائبًا ثم قم بإعادة إنشائه - ثم يقوم المحول بإصدار `key?: type`. يشير الاستدلال إلى حقل اختياري فقط عندما يكون لديه دليل على الغياب، وهذا هو السبب في أن عينة واحدة لا تكفي أبدًا للعقد.
هل يجب علي استخدام الواجهة أو الكتابة للأنواع التي تم إنشاؤها؟
كلاهما يعمل لأشكال الكائنات؛ واجهات تقليدية لAPI1`strict`النماذج لأنه يمكن توسيعها وإنتاج رسائل خطأ أكثر وضوحًا. الاختيار المهم هو0الوضع، وليس الكلمة الرئيسية التي تختارها.
هل يمكنني تحويل JSON إلى TypeScript دون إرسال البيانات إلى الخادم؟
نعم. يقوم المحول الموجود على هذا الموقع بإنشاء الواجهات في الصفحة نفسها، وبالتالي لا تترك الاستجابة متصفحك أبدًا ويستمر التحويل في العمل عند تعطيل الشبكة.
الأدوات المذكورة في هذه التدوينة
المزيد من المقالات للقراءة
50دقيقة قراءة
JSON to Go: بنيات يتم فك تنظيمها من المحاولة الأولى
قم بتحويل JSON إلى بنيات Go بأسماء الحقول الصحيحة وعلامات json، بما في ذلك الأنواع المتداخلة - بالإضافة إلى المصائد الرقمية والفارغة والوقتية التي يجب مشاهدتها.
60دقيقة قراءة
مخطط JSON إلى JSON: من عينة الحمولة إلى العقد
قم بتحويل مخطط JSON إلى مخطط JSON في المتصفح: استنتج مسودة من حمولة حقيقية، ثم قم بتقوية الحقول والتنسيقات والتعدادات المطلوبة - بالإضافة إلى حدود الاستدلال.
50دقيقة قراءة
JSON إلى SQL: من حمولة إلى جدول يمكنك الاستعلام عنه
قم بتحويل JSON إلى SQL باستخدام عبارات CREATE TABLE وINSERT التي تم إنشاؤها من حمولة حقيقية، مع تعيين نوع معقول وحدود هروب وصادقة.
- مقال أطول للقراءة: JSON إلى TypeScript: الأنواع التي تقول الحقيقة