ما هو ts-node ولماذا هو مطلوب؟
\n\nts-node هو محرك TypeScript لـ Node.js، يسمح بتنفيذ ملفات TypeScript مباشرة دون تجميع مسبق إلى JavaScript. يعمل كـ REPL (حلقة القراءة-التقييم-الطباعة) وكأداة سطر أوامر، مما يوفر تكاملًا سلسًا لـ TypeScript في نظام Node.js البيئي.
\n\nسيناريوهات الاستخدام الرئيسية:
\n- \n
- التطوير السريع والنمذجة الأولية — لا حاجة لانتظار تجميع كل تغيير \n
- تشغيل السكريبتات — تنفيذ ملفات TypeScript في الإنتاج (بحذر) \n
- الاختبار — تشغيل الاختبارات المكتوبة بـ TypeScript \n
- التطوير التفاعلي — وضع REPL للتجارب مع TypeScript \n
- ترحيل المشاريع — الانتقال التدريجي من JavaScript إلى TypeScript \n
على عكس النهج القياسي (التجميع عبر tsc والتشغيل عبر node)، يجعل ts-node عملية التطوير أكثر سلاسة وسرعة.
تثبيت ts-node
\n\nيتم التثبيت عبر npm (مدير حزم Node.js). لمطوري Python: هذا مشابه لـ pip install.
# تثبيت عام (متاح في كل مكان)\nnpm install -g ts-node\n\n# تثبيت محلي (موصى به للمشاريع)\nnpm install --save-dev ts-node\n\n# تثبيت مع TypeScript (إذا لم يكن مثبتًا بالفعل)\nnpm install --save-dev ts-node typescript\n\n# للعمل مع إصدارات محددة من TypeScript\nnpm install --save-dev ts-node@10.9.2 typescript@5.3.3\n\nبعد التثبيت، تحقق من الإصدار:
\nts-node --version\n# الإخراج: v10.9.2\n\nبداية سريعة مع مثال كود
\n\nأنشئ ملفًا باسم hello.ts:
// hello.ts\ninterface Greeting {\n name: string;\n age: number;\n}\n\nfunction greet(person: Greeting): string {\n return `مرحبًا، ${person.name}! عمرك ${person.age} سنة.`;\n}\n\nconst user: Greeting = { name: "أليكسي", age: 30 };\nconsole.log(greet(user));\n\nقم بتشغيله دون تجميع:
\nts-node hello.ts\n# الإخراج: مرحبًا، أليكسي! عمرك 30 سنة.\n\nللمقارنة، الطريقة العادية كانت ستستغرق خطوتين:
\ntsc hello.ts # تجميع إلى hello.js\nnode hello.js # تشغيل الملف المُجمّع\n\nالطرق والوظائف الأساسية لـ ts-node
\n\n1. ts-node [file.ts] — تشغيل الملف الأساسي
\nالوصف: الأمر الرئيسي لتنفيذ ملف TypeScript. يقوم ts-node تلقائيًا بتجميع وتنفيذ الكود.
\nالمعلمات:
\n- \n
file.ts— مسار ملف TypeScript \n --projectأو-P— مسار ملف tsconfig.json \n --transpile-only— الترجمة فقط (أسرع، ولكن بدون التحقق من الأنواع) \n
مثال:
\n# تشغيل عادي\nts-node app.ts\n\n# مع تحديد الإعدادات\nts-node --project tsconfig.prod.json app.ts\n\n# ترجمة فقط (أسرع)\nts-node --transpile-only app.ts\n\n2. ts-node --eval — تنفيذ كود من سلسلة نصية
\nالوصف: يسمح بتنفيذ كود TypeScript مُمرر كسلسلة نصية دون إنشاء ملف.
\nالمعلمات:
\n- \n
-eأو--eval— سلسلة نصية تحتوي على كود TypeScript \n -pأو--print— طباعة نتيجة التنفيذ \n
مثال:
\n# تعبير بسيط\nts-node -e "console.log('Hello from ts-node!')"\n\n# باستخدام ميزات TypeScript\nts-node -e "\ninterface User { name: string }\nconst user: User = { name: 'ماريا' };\nconsole.log(user.name);\n"\n\n# مع طباعة النتيجة\nts-node -p "1 + 2"\n\n