مش اختيار واحد
الحزمتين مش بديل لبعض. الشغل المعتاد يجمعهم:
| عايز إيه | الأمر | الحزمة |
|---|---|---|
| تشغّل وأنت بتكتب | tsx watch src/main.ts | tsx |
| تتأكد إن الأنواع سليمة | tsc --noEmit | typescript |
تطلّع dist للسيرفر | tsc | typescript |
| تشغّل الناتج في production | node dist/main.js | Node بس |
package.json
{ "scripts": { "dev": "tsx watch src/main.ts", "typecheck": "tsc --noEmit", "build": "tsc", "start": "node dist/main.js" }}dev يسرّع الكتابة. typecheck وbuild هما اللي بيمنعوا غلط الأنواع من ما يوصل للسيرفر.
فين تتحط الحزمة
- الاتنين
devDependenciesلو الإنتاج بيشغّلdistبـnode. tsxتبقى dependency عادية بس لو السيرفر نفسه بيشغّل ملفات.tsبأمرtsx. ده أثقل في أول تشغيل، وبرضه مش بيفحص أنواع.- الـ CI يشغّل
typecheckحتى لو التطوير كله علىtsx. محرر الكود بيعرض الغلط وانت بتكتب، بس ده مش خطوة في الـ pipeline.
إمتى متجيبش tsx
- ملف
.tsبأنواع بتتشال بس، وNode عندك بيشيلها لوحده: التشغيل ممكن من غير الحزمة. الفحص لسه محتاجtsc. - مكتبة هتتنشر: المستهلك عايز JavaScript وملفات
.d.tsمنtsc، مش أمرtsx. - واجهة React: المتصفح مش بيشغّل
tsx. البناء هناك لـ Vite أو أداة تانية، وtsc --noEmitيفضل خطوة الفحص.
خلّصت الفصل لما
🧠 اختبر نفسك
١) مشروع Node بيتنشر منه مجلد dist. tsx تتحط dependency عادية؟
لأ. خليها devDependency. الإنتاج يشغّل
node dist/main.js.٢) الـ dev شغال بـ tsx ومفيش أخطاء في الطرفية. الأنواع مضمونة؟
لأ. لازم
tsc --noEmit في التطوير أو في الـ CI.٣) مكتبة TypeScript هتتنزل عند الناس. تكتفي بـ tsx؟
لأ. انشر JavaScript وملفات الأنواع اللي
tsc بيطلّعها.