DevToolPal
ع

تحويل JSON إلى TypeScript

ينشئ واجهات أو أنواع TypeScript من مثال JSON، مع الأنواع المتداخلة والحقول الاختيارية والتعامل مع null.

يعمل محليًا، دون أي رفع

الخيارات

التصريح باستخدام
قيم null

JSON

0 حرف · 0 B

TypeScript

0 حرف · 0 B

ما الذي تفعله الأداة

يقرأ مولّد JSON إلى TypeScript مثال JSON، مثل استجابة API أو ملف إعدادات، ويكتب واجهات TypeScript التي تصفه. بدل كتابة كل حقل يدويًا، الصق استجابة حقيقية واحدة واحصل على أنواع جاهزة للاستخدام في شيفرتك، لنتائج fetch أو حالة Redux أو بيانات الاختبار.

يفحص المولّد كل قيمة لا الأولى فقط. تصبح الأرقام number والنصوص string، وتحصل الكائنات المتداخلة على واجهاتها الخاصة، وتُدمج عناصر المصفوفة، فيُعلَّم الحقل الذي يظهر في بعض العناصر فقط بأنه اختياري، ويُعطى الحقل الذي يكون null أحيانًا نوعًا يقبل null.

طريقة الاستخدام

  1. الصق JSON في حقل الإدخال، أو ارفع ملف .json، أو انقر مثال.
  2. حدّد اسم النوع الجذري واختر الأسلوب: interface أو type، وكتابة null بالشكل | null أو كحقول اختيارية، وخصائص readonly، وإضافة export إلى كل تصريح أم لا.
  3. انسخ TypeScript أو نزّله كملف .ts.

يُبلَّغ عن JSON غير الصالح مع السطر والعمود اللذين فيهما المشكلة، لتصحّح المثال فورًا.

مثال

هذا الـ JSON:

{ "id": 7, "name": "Ada", "tags": ["admin"], "manager": { "id": 1, "email": null } }

يصبح هذه التصريحات:

export interface Root {
  id: number;
  name: string;
  tags: string[];
  manager: Manager;
}

export interface Manager {
  id: number;
  email: null;
}

نصائح

  • يُظهر المثال الواحد ما يحتويه فقط. إذا كان الحقل قد يكون نصًا أو null فضمّن مثالًا لكل حالة، أو ضع عدة أمثلة في مصفوفة لتُدمج.
  • تُكتب أسماء الحقول التي ليست معرّفات صالحة، مثل first-name، بين علامتي تنصيص، لذا تُترجَم النتيجة دائمًا.
  • النتيجة نقطة بداية. ضيّق حقول النص إلى اتحادات قيم حرفية أو Date عندما تعرف أكثر مما يُظهره المثال.
  • تحتاج إلى Go؟ يستخدم محوّل JSON إلى Go الاستنتاج نفسه لكتابة بنى struct مع وسوم json.

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

› كيف تُعالَج الكائنات المتداخلة؟

يصبح كل كائن متداخل واجهة مسمّاة مستقلة يُشتق اسمها من مفتاحه بصيغة PascalCase، فينتج الحقل address واجهة Address. تتشارك الكائنات ذات البنية المتطابقة تمامًا واجهة واحدة، وتحصل الأسماء المتعارضة على رقم مثل Address2.

› كيف تُحدَّد أنواع المصفوفات؟

تُدمج كل عناصر المصفوفة في نوع عنصر واحد. تصبح مصفوفة الكائنات مصفوفة من واجهة واحدة تحمل صيغة المفرد من المفتاح، فيعطي orders النوع Order[]. وتصبح المصفوفات المختلطة اتحادًا مثل (string | number)[] والمصفوفات الفارغة unknown[].

› متى يُعلَّم الحقل بأنه اختياري؟

عندما يغيب عن بعض كائنات المصفوفة. أما الحقل الموجود في كل مكان لكنه يكون null أحيانًا فيُكتب افتراضيًا بالشكل T | null. بدّل قيم null إلى اختياري لإزالة null وتعليم الحقل بأنه اختياري بعلامة استفهام.

› هل أختار interface أم type؟

كلاهما يصف أشكال الكائنات نفسها. يمكن توسيع الواجهات ودمجها، وتفضّلها كثير من أدلة الأسلوب لأنواع الكائنات. أما أسماء type المستعارة فمفيدة إذا كنت ستجمع النتيجة مع الاتحادات أو الأنواع المعيّنة. اختر ما يستخدمه مشروعك.

› هل يُرسل JSON الخاص بي إلى خادم؟

لا. يجري استنتاج الأنواع في متصفحك، لذا يمكنك لصق استجابات API حقيقية بأمان.