استراتيجية التحويل ملفًا بعد ملف
أعيدوا تسمية .js إلى .ts تدريجيًا دون تعطيل أي شيء
استراتيجية التحويل ملفًا بعد ملف درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.
النهج التدريجي
يحوّل النهج ملفًا واحدًا في كل مرة، إذ يعيد تسمية ملف .js إلى .ts ويعالج أخطاء الأنواع أثناء التقدم. ويحافظ ذلك على قابلية تجميع المشروع في كل خطوة.
# Step 1: rename
mv src/utils.js src/utils.ts
# Step 2: fix errors
npx tsc --noEmit
# Step 3: commit and repeatاختيار نقطة البداية
ابدأ بالوحدات الطرفية، أي الملفات التي لا تستورد ملفات أخرى من المشروع. فلا توجد لهذه الملفات تبعيات TypeScript لاحقة يجب استيفاؤها أولًا.
# Find files with fewest imports from other project files:
grep -r "from './" src --include="*.js" | sort | uniq -c | sort -n
# Convert lowest-count files firstمعالجة أخطاء any الضمنية
عند إعادة تسمية ملف JS إلى .ts، تصبح المعلمات التي لا تحتوي على أنواع أخطاء any ضمنية إذا كان noImplicitAny: true. أضف أنواعًا صريحة أو استخدم any مؤقتًا.
// Before: JS
function process(data) { return data.value; }
// After: TS (add annotation)
function process(data: { value: string }) { return data.value; }
// Or temporarily:
function process(data: any) { return data.value; }تجاهل الأخطاء مؤقتًا
استخدم // @ts-ignore في الأسطر التي يصعب إصلاحها، وسجّلها كمهام TODO حتى لا تُنسى.
// TODO: type this properly in follow-up PR
// @ts-ignore
const result = complexLegacyFunction(x);تحديث عبارات الاستيراد
عندما يصبح الملف .ts، قد تحتاج الملفات التي تستخدمه إلى تحديث عبارات الاستيراد. يحل TypeScript ملفات .ts تلقائيًا من دون امتدادات الملفات في مسارات الاستيراد.
// No extension needed — TypeScript finds .ts
import { process } from "./utils";تحويل عبارات require التابعة لجهات خارجية
استبدل استدعاءات CommonJS require بصيغة import الخاصة بوحدات ES أثناء التحويل، لتتوافق مع آلية حل الوحدات في TypeScript.
// Before: CommonJS
const fs = require("fs");
// After: ES module
import fs from "fs";التدرج نحو الوضع الصارم
فعّل خيارات الوضع الصارم تدريجيًا لكل ملف باستخدام تعليقات // @ts-strict-ignore الخاصة بالملف، أو بالترحيل إلى ملف tsconfig منفصل مع تفعيل الوضع الصارم.
// tsconfig.strict.json — points to converted files only
{
"extends": "./tsconfig.json",
"compilerOptions": { "strict": true },
"include": ["src/converted/**/*"]
}تتبع الملفات المتبقية
احتفظ بقائمة تحقق أو استخدم برنامجًا نصيًا لحساب ملفات .js المتبقية وتتبع تقدم الترحيل بمرور الوقت.
find src -name "*.js" | wc -l # remaining JS files
find src -name "*.ts" | wc -l # converted TS filesتجنب طلبات السحب الكبيرة
حوّل ملفًا واحدًا في كل PR لتسهيل المراجعات. تكون عمليات ترحيل TypeScript الكبيرة أسهل في المراجعة والتراجع عنها عندما تقتصر على ملفات فردية.
# Good: one file per PR
# Bad: 50 files renamed in one PRتشغيل الاختبارات بعد كل تحويل
شغّل مجموعة الاختبارات بعد تحويل كل ملف لاكتشاف تراجعات وقت التشغيل التي قد لا يكشفها مدقق أنواع TypeScript.
npm test
# Ensure all tests pass after each .js → .ts renameمراجعة: استراتيجية التحويل ملفًا تلو الآخر
حوّل الملفات الطرفية أولًا، وأصلح الأخطاء أو تجاهلها، وحافظ على قابلية تجميع المشروع في كل خطوة، وتابع ملفات JS المتبقية، وقدّم ملفًا واحدًا في كل PR لتسهيل المراجعات.
تحقق سريع
ما الملفات التي ينبغي تحويلها إلى TypeScript أولًا عند تنفيذ الترحيل ملفًا تلو الآخر؟
ما تعلمته
الترحيل ملفًا تلو الآخر: ابدأ بالوحدات الطرفية، وأعد التسمية إلى .ts، وأصلح الأخطاء أو تجاهلها، وحافظ على قابلية تجميع المشروع، وتابع التقدم. تجعل التحويلات الصغيرة في كل PR عملية الترحيل آمنة وقابلة للمراجعة.
الأسئلة الشائعة
هل درس «استراتيجية التحويل ملفًا بعد ملف» مجاني؟
نعم — نص درس «استراتيجية التحويل ملفًا بعد ملف» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.
ماذا ستتعلم في «استراتيجية التحويل ملفًا بعد ملف»؟
أعيدوا تسمية .js إلى .ts تدريجيًا دون تعطيل أي شيء تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟
لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «استراتيجية التحويل ملفًا بعد ملف»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟
نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- بدء الترحيل: allowJs وcheckJs
- تعليقات أنواع JSDoc كجسر للترحيل
- استراتيجية التحويل ملفًا بعد ملف
- التعامل مع مكتبات الجهات الخارجية غير محددة الأنواع