تحويل JSON إلى TypeScript — توليد الأنواع من JSON
استنتاج أنواع TypeScript من عينات JSON بما فيها الكائنات المتداخلة والمصفوفات
تعمل في متصفحك · لا يُرفع أي شيء
يستنتج الأنواع من عينة واحدة. كل الخصائص إلزامية، والمصفوفات الفارغة تصبح unknown[]، والعناصر المختلفة في المصفوفة تكوّن نوع اتحاد. لا يُنشئ شيفرة تحقق وقت التشغيل.
طريقة الاستخدام
- الصق عينة JSON من استجابة API أو ملف إعدادات.
- حدّد اسم النوع، مثل Root أو ApiResponse.
- انسخ الاسم المستعار المُصدَّر للنوع إلى ملف TypeScript.
- راجع الخصائص التي قد تكون مفقودة أو null في الاستجابات الحقيقية.
قواعد الاستنتاج
تصبح النصوص string، والأعداد number، والقيم المنطقية boolean، وتبقى null كما هي. كل خاصية كائن ظهرت في العينة تكون إلزامية. وتوضع أسماء الخصائص بين علامتي تنصيص، فتبقى الأحرف العربية والصينية والكورية والرموز التعبيرية وعلامات الترقيم مفاتيح صالحة. وتجمع المصفوفات الأشكال المستنتجة المختلفة في اتحاد، بينما تصبح المصفوفات الفارغة unknown[]. ويصبح الكائن الفارغ Record<string, never>.
هذا استنتاج من عينة وليس اكتشافًا للمخطط الكامل، فاستجابة ناجحة واحدة لا تكشف كل استجابات الأخطاء أو الحقول الاختيارية. وترفض الأداة المفاتيح المكررة بدلًا من إهمال القيمة السابقة بصمت. والتعليقات والفواصل الزائدة ليست JSON صالحًا. ويجب أن تتكون أسماء الأنواع من حروف ASCII أو أرقام أو شرطات سفلية أو علامة الدولار، وألا تبدأ برقم، وألا تكون كلمات محجوزة. الحد الأقصى للإدخال مليون حرف، وللاستنتاج 64 مستوى من التداخل.
أمثلة
{"name":"سارة","score":3,"tags":["中文","😀"]} ينتج string للخاصية name، وnumber للخاصية score، وArray[1,"two",null] فينتج Array<number | string | null>.
الخصوصية
يجري التحويل في متصفحك دون رفع الإدخال أو حفظه. والنتيجة نقطة بداية للتطوير، فقارنها بعقد API الموثّق قبل الاعتماد عليها.
الأسئلة الشائعة
هل تُدمج الكائنات المختلفة الشكل في خصائص اختيارية؟
لا. عناصر المصفوفة المختلفة الشكل تصبح اتحادًا لتلك الأشكال. راجع النتيجة مقابل عقد API الفعلي.
ما النوع الذي تأخذه المصفوفة الفارغة؟
تصبح unknown[] لأن العينة لا تقدم أي دليل على نوع عناصرها. ضيّق النوع يدويًا عندما تعرف النوع المتوقع.
هل تتحقق الأداة من البيانات وقت التشغيل؟
لا. فهي تولّد اسمًا مستعارًا للنوع (type alias)، لا محللًا ولا دالة تحقق. وتختفي الأنواع عند ترجمة TypeScript.
هل يُرفع JSON الذي أدخله؟
لا. يجري التحويل في متصفحك دون رفع الإدخال أو حفظه.