محتويات الدورة

TypeScript / المتقدم / الدرس 16

أداء البناء وحدود المشاريع

قِس كلفة الفحص والتوليد منفصلين وقلل نطاق البرنامج العرضي واستخدم حدود المشروع دون وعود سرعة عامة.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • جمع أدلة أداء مترجم قابلة للتكرار.
  • شرح البناء التزايدي وحدود التصريحات والمراجع.
  • حفظ سلوك التنفيذ أثناء تبسيط الأنواع.

تحديد المرحلة البطيئة

قد يبطؤ اكتشاف الملفات والتحليل والحل والفحص والتصريحات والتوليد والتجميع والبدء. حدّد المرحلة قبل خيار علاج. تعرض extendedDiagnostics عملًا تجميعيًا لإعداد معين، وتحتاج التتبعات تفسيرًا وقد تتضمن المسارات. سجّل الإصدار وعدد الملفات والحالة الباردة أو الدافئة والأمر وقارن حملًا متكافئًا وتباينه. لا تعد مدة محلية بسرعة عامة لواجهة أو وضع بناء.

تسمية نتيجة ثابتة بدل توسيع التنفيذ

تعيد الدالة واجهة صغيرة مسماة تمنح حدًا واضحًا وتمنع كشف نوع مستنتج معقد عرضيًا. لا يثبت ذلك سرعة الواجهة دائمًا؛ فالكلفة حسب الحمل. يطبع المثال نتيجة صحة تقارن بها تعديلات الأداء، وتسهّل أنواع الإرجاع العامة مراجعة التصريحات. لا تغير الحساب أو التعديل باسم تبسيط نوعي. قِس البناء وافحص السلوك نفسه.

typescript عقد ناتج مسمى مدمج
export {};
interface Summary { count: number; total: number }
function summarize(values: readonly number[]): Summary {
  return { count: values.length, total: values.reduce((sum, value) => sum + value, 0) };
}
console.log(JSON.stringify(summarize([2, 4, 6])));
الناتج المتوقع
{"count":3,"total":12}

مجموع القيم الثلاث الصغيرة اثنا عشر ولا تغير الواجهة الحساب.

فحص الملفات والأنواع المحيطية المطلوبة

قد توسع أنماط include وناتج مستورد واعتماديات مكررة وأنواع عامة البرنامج. افحص الملفات والحل قبل الاستبعاد؛ فقد يدخل الملف المستورد رغم استبعاده من الاكتشاف. تضبط types الحزم المحيطية ولا تمنع كل تصريح مستورد. افصل الناتج والسياقات المختلفة للمتصفح والخادم. يعرض المثال وحدة صغيرة بلا حالة تطبيق عامة، وتحتاج التحسينات قياس شبكة المشروع الفعلية.

typescript عقد وحدة صغير صريح
export {};
type Label = { text: string };
function makeLabel(value: number): Label { return { text: `item-${value}` }; }
const label = makeLabel(3);
console.log(label.text);
الناتج المتوقع
item-3

تنشئ الدالة كائنًا عاديًا ولا يضيف الاسم النوعي عملًا أو يزيل اعتماديات مشروع أكبر.

إعادة استخدام العمل بحدود موثقة

تحفظ incremental معلومات لتجنب عمل مناسب، وتقسم المراجع الشيفرة لمشاريع composite مرتبطة وينسق build mode نواتجها. تتبع الفائدة الشبكة ونمط التغيير والحدود والأدوات. قد يبطل نوع عام مستهلكين كثيرين بخلاف تنفيذ داخلي. وحّد معلومات البناء والتصريحات مع المترجم وسياسة التنظيف. لا تعرض زمنًا دافئًا ككامل بارد وتحقق من بناء نظيف للمصادر المعلنة.

حفظ التشخيص أثناء تقليل الكلفة

قد تقلل skipLibCheck الكلفة وتخفي تناقضًا دون إصلاحه. تفحص isolatedModules شروط محول ملفي ولا تعادل الفحص الدلالي الكامل. أرفق نزع الأنواع بخطوة الفحص المقصودة. قلل التعبيرات المكلفة والنماذج الواسعة قبل إضعاف الفحوص. أدرج مثالًا آمنًا وإعدادًا وإصدارًا ومقاييس واختبارات ثابتة. لا ترفع مصادر أو تتبعات خاصة دون إذن؛ فالتجربة الاصطناعية توضح المشكلة.

الأخطاء الشائعة وإصلاحها

عرض بناء دافئ كأداء كامل.

لماذا يحدث؟
أُغفلت حالة التخزين والحمل.
كيف تصلحه؟
قِس البارد والتزايدي وسمّهما منفصلين.
كيف تتجنب تكراره؟
سجّل المترجم والإعداد والافتراضات.

الناتج المولد يوسع برنامج المصدر.

لماذا يحدث؟
تداخل الناتج مع الاكتشاف أو استُورد عرضيًا.
كيف تصلحه؟
افصل الناتج وافحص شبكة الملفات.
كيف تتجنب تكراره؟
احفظ فحص البناء النظيف.

معاملة skipLibCheck كإصلاح تصريحات.

لماذا يحدث؟
خُلط تجاوز الدليل بتصحيح العقد.
كيف تصلحه؟
أصلح التصريحات وراجع المفاضلة.
كيف تتجنب تكراره؟
وثّق سبب تجاوز أي فحص.

اختبر فهمك

1. يبدو تحديث المترجم أبطأ في أول تشغيل فقط. صمّم مقارنة عادلة قبل تغيير الخيارات.

اعرض الحل المشروح

ثبّت الإصدارين والمصدر والخيارات والاعتماديات والآلة، وافصل البارد من الدافئ وسجّل افتراضات المعلومات والمخزن. اجمع تشخيص المرحلة المتغيرة. لا تبرر أول مرة تعطيل strict دون دليل للكلفة.

2. يُبسّط نوع شرطي عام مكلف إلى Summary. ما الاختبارات لقبول التغيير؟

اعرض الحل المشروح

ترجم استدعاءات ممثلة وافحص العلاقات المطلوبة والتصريحات والرفض المقصود. شغّل اختبارات التقرير نفسها لمنع تغير السلوك وقِس الكلفة بمترجم وحمل ثابتين. وثّق فقد الدقة بدل تسميته تحسينًا متوافقًا صمتًا.

أهم ما تعلمته

  • قِس المراحل وحالات التخزين منفصلة.
  • استخدم حدودًا تطابق الاعتماديات.
  • لا تخلط تجاوز الفحص بإصلاح الأنواع.

المراجع الرسمية