→ جميع الأدوات Code Gen

مولّد واجهات TypeScript من JSON

الصق JSON واحصل على واجهات TypeScript فورًا — دون حاجة للكتابة اليدوية.

0 حرف
أو اضغط Ctrl+Enter

100% من جانب العميل

يتم تشغيل كل التوليد في متصفحك. بياناتك لا تُرسل أبدًا إلى أي خادم.

كيف تعمل استنتاج الأنواع

يحلّل المولّد JSON الخاص بك ويستنتج نوع TypeScript لكل قيمة: تصبح السلاسل string والأرقام number والقيم المنطقية boolean وتصبح null هي null. تُكتب المصفوفات T[] حيث T هو نوع العنصر المستنتج. عندما تحتوي مصفوفة على عناصر من أنواع مختلفة يصبح نوع العنصر اتحادًا مثل string | number.

تصبح الكائنات المتداخلة واجهات مسمّاة بحد ذاتها. يُسمّى الكائن الجذري "Root" افتراضيًا (قابل للتخصيص)، ويحصل كل كائن متداخل على اسم بصيغة PascalCase مشتق من مفتاحه — فمثلًا المفتاح "userProfile" يولّد واجهة "UserProfile". يحافظ هذا على أن المخرجات معيارية ومقروءة.

تُعلَّم الخصائص الموجودة في بعض عناصر المصفوفة والغائبة في أخرى تلقائيًا بأنها اختيارية بمُعدِّل ?. يُمثّل هذا بشكل صحيح استجابات API الواقعية حيث قد تظهر الحقول أو لا تظهر بحسب حالة السجل.

خيارات المخرجات والأسلوب

يمكنك الاختيار بين مخرجات interface وأسماء مستعارة للأنواع. الواجهات هي الخيار المثالي لوصف أشكال الكائنات وتدعم دمج التصريحات؛ تُفضَّل أسماء الأنواع المستعارة عندما تحتاج أنواع اتحاد على المستوى الأعلى. يُنتج المولّد واجهات افتراضيًا لكنه يستطيع التبديل إلى أسماء الأنواع المستعارة بنقرة واحدة.

يمكن إضافة مُعدِّلات readonly لجميع الخصائص لإنتاج أنواع غير قابلة للتغيير — مفيدة لحالة Redux وكائنات الإعداد ونماذج استجابات API التي لا ينبغي تغييرها بعد الإنشاء. تفضيل الفاصلة المنقوطة أو الفاصلة كمحددات للخصائص قابل للتهيئة أيضًا.

تُضاف الكلمة المفتاحية export بشكل افتراضي لكل واجهة حتى يكون الملف المولّد قابلًا للاستيراد فورًا. التغليف بنطاق اسم متاح لتجميع جميع الأنواع المولّدة تحت معرّف وحدة واحد وهو شائع في قواعد الكود الكبيرة.

سير عمل التطوير العملي

أكثر مسارات العمل شيوعًا هو تحديد نوع استجابة API خارجية. احصل على استجابة نموذجية والصق JSON واستخدم الواجهات المولّدة كمعامل نوع لاستدعاءات fetch أو طلبات Axios أو خطافات React Query. يُزيل هذا فئات كاملة من أخطاء النوع في وقت التشغيل.

عند بناء نموذج أولي لميزة جديدة غالبًا ما يكون لديك ملف بيانات نموذجي قبل وجود تعريفات أنواع رسمية. يُهيئ المولّد أنواعك من البيانات حتى تتمكن من كتابة كود آمن من حيث النوع فورًا وتحسين الأنواع مع استقرار المخطط.

تستخدم الفرق التي تُرحّل قواعد كود JavaScript إلى TypeScript المولّد لإنتاج ملفات واجهات دفعة واحدة لنماذج البيانات الموجودة. حتى الأنواع المولّدة غير المثالية تخدم كنقطة بداية أسرع بكثير من كتابة كل واجهة يدويًا.

FAQ

هل تُرسَل بياناتي إلى خادم؟

لا. تتم جميع المعالجة بالكامل داخل متصفحك. لا يغادر JSON جهازك أبدًا.

كيف تُعالَج مصفوفات الكائنات ذات المفاتيح غير المتسقة؟

يدمج المولّد جميع المفاتيح الموجودة في كل عنصر. المفاتيح الموجودة في بعض العناصر دون غيرها تُعلَّم اختيارية بعلامة ?. تمثّل الواجهة الناتجة بدقة المجموعة الكاملة من الخصائص المحتملة.

هل يمكنني توليد مخططات Zod بدلًا من الواجهات؟

تولّد هذه الأداة واجهات TypeScript وأسماء أنواع مستعارة بسيطة. لتوليد مخططات Zod ستحتاج إلى أداة مخصصة لـ Zod.

ماذا يحدث مع قيم null؟

خاصية قيمتها null تُكتب null. إذا ظهرت الخاصية ذاتها كسلسلة في بعض الكائنات وkنull في أخرى يصبح النوع string | null لتعكس بدقة القيم المحتملة.

هل تُدعَم الهياكل المتداخلة بعمق؟

نعم. يتعامل المولّد مع عمق تداخل عشوائي منتجًا واجهة مسمّاة منفصلة لكل كائن متداخل ومرجعًا إليها باسمها في الواجهة الأم.

أدوات ذات صلة