كيفية تشغيل TypeScript من سطر الأوامر: 3 طرق عملية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

كيفية تشغيل TypeScript من سطر الأوامر: من البسيط إلى الاحترافي

\n\n

لقد كتبت أول سكربت لك بلغة TypeScript. يبدو كل شيء جميلاً: كتابة صارمة للأنواع، بناء جملة موجز، إكمال تلقائي في بيئة التطوير المتكاملة (IDE). ولكن عندما تفتح الطرفية (Terminal) وتكتب node script.ts، يعطيك Node.js خطأ. هل هذا مألوف؟

\n\n

TypeScript هي طبقة إضافية فوق JavaScript، و Node.js لا يعرف كيفية تنفيذ ملفات .ts بشكل مباشر. في هذه المقالة، سنستعرض جميع الطرق الحقيقية لتشغيل TypeScript من سطر الأوامر. ستتعرف على الفرق بين التشغيل السريع وبناء الإنتاج (production build)، ومتى تستخدم ts-node، ومتى تستخدم tsx، وكيف لا تتوه بين الأدوات.

\n\n

نعتمد على سؤال شائع من Stack Overflow (أكثر من 500 ألف مشاهدة)، لكننا لا نقدم مجرد إجابة، بل مقارنة شاملة بين الطرق. هيا بنا!

\n\n

لماذا لا يفهم Node.js لغة TypeScript؟

\n\n

قبل أن نركض نحو الأدوات، دعنا نفهم الجوهر. عندما تكتب:

\n\n
const greet = (name: string): string => {\n  return `Hello, ${name}!`;\n};\nconsole.log(greet('PythonLib'));
\n\n

يرى Node.js : string ولا يفهم ماذا يفعل به. JavaScript لا يدعم الكتابة الثابتة للأنواع كجزء من بناء الجملة. لذلك، يجب أولاً تحويل (transpile) TypeScript إلى JavaScript، ثم تشغيله.

\n\n

هناك طريقتان مختلفتان جوهرياً:

\n
    \n
  • طريقة من خطوتين: أولاً الترجمة tsc script.ts، ثم التشغيل node script.js.
  • \n
  • طريقة من خطوة واحدة: استخدام أدوات تقوم بكلا الإجراءين نيابة عنك "أثناء التنفيذ" (JIT-compilation).
  • \n
\n\n

سننظر في كلا الخيارين، لكننا سنبدأ بالأكثر شيوعاً — طريقة الخطوة الواحدة.

\n\n

الطريقة 1: ts-node — الكلاسيكية في هذا المجال

\n\n

ts-node هو محرك تنفيذ TypeScript لـ Node.js. يقوم بترجمة الكود في الذاكرة ويمرره فوراً إلى Node.js. هذه هي أقدم وأثبت طريقة لتشغيل TypeScript من سطر الأوامر دون حركات زائدة.

\n\n

التثبيت والتشغيل

\n\n
npm install -g ts-node typescript @types/node\nts-node script.ts
\n\n

هذا كل شيء. سيتم تنفيذ ملفك دون إنشاء ملف JS وسيط. تحت الغطاء، يستخدم ts-node مترجم TypeScript القياسي (tsc)، لكنه يفعل ذلك بشفافية للمطور.

\n\n

مثال: العمل مع API

\n\n
// api-demo.ts\nimport axios from 'axios';\n\ninterface Post {\n  userId: number;\n  id: number;\n  title: string;\n}\n\nasync function fetchFirstPost(): Promise<Post> {\n  const response = await axios.get<Post>('https://jsonplaceholder.typicode.com/posts/1');\n  return response.data;\n}\n\nfetchFirstPost().then(post => console.log(post.title));\n// الإخراج: sunt aut facere repellat provident occaecati excepturi optio reprehenderit
\n\n

نقوم بالتشغيل: ts-node api-demo.ts. النتيجة — مباشرة في وحدة التحكم.

\n\n

إيجابيات وسلبيات ts-node

\n\n
    \n
  • + البساطة: أمر واحد بدلاً من اثنين.
  • \n
  • + دعم tsconfig.json: جميع إعدادات TypeScript الخاصة بك تؤخذ في الاعتبار.
  • \n
  • + REPL: الأمر ts-node بدون وسائط يفتح واجهة تفاعلية لـ TypeScript.
  • \n
  • - السرعة: في كل تشغيل تحدث عملية ترجمة، وهذا ملحوظ في المشاريع الكبيرة.
  • \n
  • - استهلاك الذاكرة: عند العمل لفترة طويلة (مثلاً في وضع المراقبة watch-mode)، قد يستهلك ذاكرة الوصول العشوائي (RAM).
  • \n
\n\n

متى تستخدم: للسكربتات، النماذج الأولية، الأدوات المساعدة الصغيرة. إذا كنت بحاجة لتشغيل ملف TypeScript من سطر الأوامر بسرعة وبدون إعدادات — فإن ts-node هو خيارك.

\n\n

الطريقة 2: tsx — الوريث الحديث والسريع

\n\n

tsx (TypeScript Execute) هي أداة أحدث،

المدونات

توصيات الكتب