من JSON إلى TypeScript: توقف عن كتابة الواجهات يدويًا

2024-08-04

الواجهات المكتوبة يدويًا تنحرف بسهولة عن استجابات API الحقيقية. توليد الأنواع من عينات JSON أسرع وأدق إذا فهمت الحدود.

لماذا توليد الأنواع؟

تكتشف الأخطاء الإملائية والوصول إلى null وقت البناء، خصوصًا عندما يكون OpenAPI ناقصًا أو قديمًا.

مثال تعيين يدوي

JSON
{ "id": 1, "name": "Alice", "email": null }
TypeScript
interface User {
  id: number;
  name: string;
  email: string | null;
}

المصفوفات المتداخلة والاتحادات

المصفوفة الفارغة تحتاج نوع عنصر يدوي، والمصفوفات غير المتجانسة تتحول غالبًا إلى union types.

اختياري أم null

المفتاح المفقود (email?) يختلف عن القيمة null (email: string | null). هذا التفريق يجب أن يطابق دلالات الخلفية.

الأدوات

quicktype CLI وjson-schema-to-typescript وjson2ts عبر الويب مفيدة حسب حجم العمل.

# npx quicktype sample.json -o types.ts --lang typescript

أفضل الممارسات

أعد التوليد بدل تعديل الملفات المولدة يدويًا، واستخدم عينات متعددة، ودع tsc يكشف تغييرات API المكسِرة.