تخطَّ إلى المحتوى الرئيسي

محول JSON إلى TypeScript مجانًا

قم بإنشاء واجهات TypeScript أو اكتب أسماء مستعارة من أي كائن أو مصفوفة JSON. الصق JSON واحصل على أنواع TypeScript جاهزة للاستخدام على الفور.

يعمل دون اتصال بعد التحميل
export interface User {
  id: number;
  name: string;
  email: string;
  isActive: boolean;
  score: number;
  tags: string[];
  address?: null;
}

export interface Root {
  user: User;
  createdAt: string;
  version: number;
}

الاستخدامات الشائعة

  • إنشاء أنواع TypeScript من استجابات APIالصق استجابة JSON من API وأنشئ على الفور واجهات TypeScript لجعل رمز واجهتك الأمامية آمنة النوع.
  • أنواع TypeScript لكائنات الإعدادات والإعداداتإنشاء واجهات TypeScript من ملفات تكوين JSON لإضافة سلامة النوع إلى إعدادات التطبيق.
  • إنشاء أنواع TypeScript من سجلات قاعدة البياناتتحويل سجلات قاعدة البيانات المصدرة JSON أو نتائج استعلام ORM إلى واجهات TypeScript لكتابة طبقة البيانات.
  • بيانات وحدات اختبار النوع والتجهيزاتإنشاء واجهات TypeScript من بيانات وحدات اختبار JSON والتجهيزات لكتابة اختبارات الوحدة وقصص Storybook.
  • استجابات API من الجهات الخارجية من النوعإنشاء واجهات TypeScript من استجابات API من جهات خارجية حيث تكون الأنواع الرسمية مفقودة أو غير محدثة.

كيف يعمل

تستخدم هذه الأداة خوارزمية استنتاج أنواع عودية مكتوبة يدويًا دون أي مكتبات خارجية — JSON.parse للتحقق من الإدخال وتحليله، ثم اجتياز مخصص يمر على كل قيمة في شجرة JSON ويُخرج تعريفات TypeScript interface أو type مباشرة في المتصفح. لا يُرسل أي شيء إلى خادم.

  1. 1
    تحليل JSON والتحقق منه
    يُمرَّر إدخالك إلى JSON.parse. إذا فشل، يظهر خطأ التحليل الدقيق فورًا أسفل الإدخال. والتحليل الناجح ينتج شجرة قيم محددة الأنواع تقود بقية التحويل.
  2. 2
    استنتاج الأنواع عوديًا
    تمر دالة getType العودية على كل عقدة: تُربط القيم الأولية بـ string أو number أو boolean أو null؛ وتنشئ الكائنات interface مسمّاة جديدة؛ ومصفوفات الكائنات تُدمج مفاتيحها عبر كل العناصر، فتصبح المفاتيح الموجودة في بعض العناصر فقط اختيارية وتُضم أنواع القيم المتعارضة بـ |.
  3. 3
    تسمية interface آمنة من التصادم
    يحصل كل كائن متداخل على اسم بصيغة PascalCase مشتق من مفتاح JSON الخاص به (مع توحيد snake_case وkebab-case والمسافات). إذا كان كائنان مختلفان بنيويًا سيشتركان في الاسم نفسه، تُضاف لاحقة رقمية (Data وData2 و…) بدلًا من الكتابة فوق التعريف الأسبق بصمت.
  4. 4
    عرض الإخراج وإتاحته للتنزيل
    تُخرج الواجهات المتداخلة أولًا، ثم النوع الجذري، منسّقة كـ export interface أو export type حسب اختيارك. يمكن نسخ النتيجة إلى الحافظة أو تنزيلها كملف .ts — وكل ذلك مبني بـ Blob قياسي دون ذهاب وإياب إلى خادم.

أدوات ذات صلة

الأسئلة الشائعة