حول هذه الأداة
يقرأ محوّل JSON إلى TypeScript مستند JSON ويستنتج نوعًا ثابتًا له: تتطابق القيم القياسية مع string وnumber وboolean؛ وتصبح المصفوفات T[]؛ وتُستخرَج الكائنات المتداخلة إلى واجهات مُسمّاة خاصة بها بدلًا من تضمينها مباشرةً. تسير هذه الأداة عبر شجرة القيمة بأكملها، فتدمج مفاتيح كل كائن في مصفوفة (واضعةً علامة اختيارية على المفاتيح الغائبة عن بعض العناصر)، وتزيل تكرار الكائنات المتطابقة في الشكل كي تعيد استخدام واجهة واحدة، وتضع علامات اقتباس على أي اسم خاصية ليس مُعرّفًا صالحًا. تتحد قيم null مع نوع شقيقها عند رؤية أحدها، وتصبح المصفوفات الفارغة unknown[]، وتصبح الكائنات الفارغة Record<string, unknown>.
استخدمه لتحويل استجابة واجهة برمجة تطبيقات إلى نماذج مُصنّفة دون كتابتها يدويًا، أو لإنشاء هيكل واجهات من ملف تثبيت بيانات أو ملف إعداد، أو للتحقق من الشكل الفعلي لحمولة ما قبل ربطها بشيفرتك. أعد تسمية النوع الجذري، وبدّل بين مخرجات interface وtype لمطابقة أعراف شيفرتك، وتُعاد توليد النتيجة حيًّا أثناء اللصق أو التحرير — ثم انسخها مباشرةً إلى ملف .d.ts أو ملف نماذج.
تعكس الأنواع المُولَّدة العيّنة التي تلصقها فقط — فالحقول التي تصادف غيابها أو كونها null في مثالك قد تظهر مع ذلك في البيانات الحقيقية، لذا راجع القيم الاختيارية واتحادات null قبل الوثوق بها.
الأسئلة الشائعة
هل تُولّد واجهات TypeScript أم أسماء أنواع مستعارة؟
كلاهما. الوضع الافتراضي هو interface، وهو الأفضل لنماذج الكائنات التي قد ترغب في توسيعها أو دمجها؛ بدّل إلى خيار type لإصدار أسماء أنواع مستعارة بدلًا من ذلك، وهي قادرة على التعبير عن الاتحادات والصفوف التي لا تستطيع الواجهات التعبير عنها.
كيف تتعامل مع مصفوفة من الكائنات ذات مفاتيح مختلفة؟
تدمج المفاتيح عبر كل عنصر في واجهة واحدة. ويوضَع على أي مفتاح غائب عن عنصر واحد على الأقل علامة اختيارية بـ ?، بحيث يصف النوع المُولَّد بأمان جميع العناصر في المصفوفة.
لماذا يتشارك كائنان متداخلان اسم الواجهة نفسه؟
يُزال تكرار الكائنات ذات المجموعة المتطابقة من الحقول وأنواع الحقول في واجهة واحدة مُسمّاة يُعاد استخدامها، مما يبقي المخرجات مضغوطة ويتجنّب التعريفات المكررة شبه المتطابقة.