سمارتحلول تقنية للأعمال
English اطلب اجتماعًا

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

استنتج مسودة أنواع من عينة JSON ووضّح أنها تعتمد على العينة وتحتاج مراجعة.

لكل كائن متداخل نوع باسمه. تُدمج عناصر القائمة، والمفتاح الغائب عن بعض العناصر يصبح اختياريًا (?). الأنواع مأخوذة من هذه العينة وحدها، فراجعها على بياناتك الحقيقية.

التعريف بصيغة

النتيجة

الصق عينة JSON وستظهر أنواع TypeScript هنا.

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

  1. الصق JSON أو اضغط «جرّب مثالًا».
  2. اكتب اسم النوع الرئيسي واختر interface أو type.
  3. انسخ التعريفات أو نزّلها ملف ‎.ts.

أمثلة

  • كائن بسيط{"id": 1, "name": "Ada"} export interface Root { id: number; name: string; }
  • حقل اختياري[{"a": 1}, {"a": 2, "b": true}] b?: boolean
  • قائمة مختلطة[1, "a"] (string | number)[]
تفاصيل الأداة والخصوصية

الصق مثالًا من JSON (مثل رد API) وستحصل على تعريفات TypeScript جاهزة: نوع رئيسي باسم تختاره، ونوع مستقل لكل كائن متداخل.

كتابة الأنواع يدويًا لرد API طويل بطيئة، والنسيان فيها يظهر خطأً وقت التشغيل.

الخيارات

  • كل كائن متداخل يأخذ اسمًا من مفتاحه، مثل address ← Address وproducts ← Product.
  • تُدمج عناصر القائمة، والمفتاح الغائب عن بعضها يصبح اختياريًا (?).
  • المفاتيح التي ليست أسماء صالحة مثل "first-name" تُكتب بين علامتي تنصيص.

الحدود

  • الأنواع مأخوذة من هذه العينة وحدها؛ حقل null يصبح null فقط، والقائمة الفارغة unknown[].
  • لا تُستنتج التواريخ أو القيم المحددة (enum) من النص.

الخصوصية

ما تكتبه يبقى في متصفحك. لا يُرفع شيء ولا يُحفظ على الخادم.

أسئلة

لماذا email من نوع null؟

لأنه null في العينة. عدّله إلى string | null إن كان يحمل نصًا أحيانًا.

ما الفرق بين interface وtype هنا؟

الشكل نفسه؛ اختر ما يتبعه مشروعك.

هل تعمل المفاتيح العربية؟

نعم، وتُكتب كما هي لأنها أسماء صالحة في TypeScript.

هل يُرفع JSON؟

لا.

أدوات مرتبطة

كل الأدوات