مقالة إرشادية · 6 دقيقة للقراءة
قم بإنشاء أنواع TypeScript من JSON التي تحكي الحقيقة
تبدأ خطوة JSON إلى TypeScript عادةً بنسخ استجابة واجهة برمجة التطبيقات (API) إلى محرر وكتابة الواجهة يدويًا - وهي مهمة صغيرة تخفي مخاطرة كبيرة: الأنواع التي تكتبها تصف الاستجابة الوحيدة التي رأيتها، وليس الاستجابات التي سيثيرها المستخدمون.
تم التحديث
JSON إلى TypeScript: البدء من حمولة تمثيلية، وليست حمولة محظوظة
يمكن للمولد أن يستنتج فقط ما تظهره عينتك. قم بإحضار استجابة تتضمن الحالات الصعبة: سجل به حقل اختياري موجود وآخر بدونه، وقيمة خالية، ومصفوفة فارغة، وعلامة عشرية. عينة واحدة جيدة تتفوق على خمس عينات نظيفة.
الحقول الاختيارية تأتي من المصفوفات
بالنظر إلى كائن واحد، يبدو كل مفتاح مطلوبًا. بالنظر إلى مجموعة من الكائنات، يمكن للمولد مقارنة العناصر: المفتاح المفقود من بعض العناصر يكون اختياريًا (مفتاح ؟: سلسلة)، ويلزم وجود مفتاح في كل مكان. ولهذا السبب فإن لصق قائمة السجلات ينتج عنه أنواع أفضل بشكل كبير من لصق سجل واحد.
نموذج فارغ بصراحة
// One sample with "deleted_at": null and one with a date
interface User {
id: number;
deleted_at: string | null; // not string, not optional
}
لاغية وغير محددة هي أشياء مختلفة. يوجد حقل فارغ بقيمة فارغة؛ قد يكون الحقل الاختياري غائبًا تمامًا. المولدات التي تدمج الاثنين تنتج واجهات تتحقق من النوع بينما تكون خاطئة - وهو أغلى نوع من الأخطاء، لأن المترجم يتوقف عن تحذيرك.
النقابات تغلب على أي
عندما يكون الحقل عبارة عن سلسلة في سجل واحد ورقم في سجل آخر - توجد واجهات برمجة تطبيقات فوضوية - فالنوع الصادق هو سلسلة | رقم. يؤدي الرجوع إلى أي شيء أو غير معروف إلى إسكات المترجم ودفع الفشل إلى الإنتاج. يقوم المولد الذي يبلغ عن الاتحاد بتوثيق الواقع على الأقل، ويمكنك بعد ذلك سؤال فريق API عن السبب.
الأنواع هي وقت الترجمة؛ التحقق من صحة في وقت التشغيل
- TypeScript يختفي أثناء التشغيل. لا شيء يمنع الحمولة المشوهة من الوصول بالشكل الذي تحظره واجهتك.
- استخدم الأنواع التي تم إنشاؤها لوصف ما تتوقعه، ومدقق وقت التشغيل (Zod، أو Valibot، أو مخطط JSON مع AJV) عند الحدود حيث تدخل البيانات إلى تطبيقك.
- يمنحك إنشاء مخطط JSON من نفس العينة نصف وقت التشغيل - التحقق من صحة المخطط، ومستند الواجهات.
احتفظ بالأنواع متجددة، وليس إعادة كتابتها
أنواع مكتوبة بخط اليد الانجراف من API. تعامل مع المولد كخطوة في سير العمل الخاص بك: الصق استجابة جديدة، وأعد الإنشاء، والصق في ملف الأنواع الخاص بك، ودع المترجم يظهر لك كل مكان تم تغييره. إنه أرخص كاشف للانجراف على الإطلاق، ويكلف ثلاثين ثانية.
جرب ذلك باستخدام منشئ JSON to TypeScript — إخراج الواجهة أو الكتابة، اكتشاف المفاتيح الاختيارية، الحفاظ على الاتحادات.