الحزمة بتشغّل
pnpm add -D tsx بيثبت أمر tsx. النسخة اللي اتجرّبت 4.23.15، ووصفها في الحزمة: Node متعزّز بـ esbuild عشان يحمّل TypeScript.
اللي بيحصل جوه:
- esbuild يشيل الأنواع ويحوّل الملف لـ JavaScript بسرعة.
- Node يشغّل الناتج.
- مفيش فحص أنواع. الحزمة مش محتاجة
typescriptعشان تشتغل، بس من غيرtscالغلط النوعي مش هيتصاد.
أوامرها الأساسية: tsx file.ts، وtsx watch file.ts عشان يعيد التشغيل لما الملف يتغيّر، وtsx --tsconfig لو مسار الـ config مش الافتراضي. ينفع كمان node --import tsx file.ts.
نفس الملف الغلط بيعدّي
على bad.ts من الفصل اللي فات، pnpm exec tsx bad.ts مشتغلش الفحص. الملف اشتغل، ووقع هنا:
TypeError: age.toFixed is not a function
القيمة كانت النص "٣٠"، وtoFixed مش موجودة على النص. tsc كان مسك الغلط قبل التنفيذ برسالة TS2322. tsx ساب الغلط يعدّي.
tsx جاية من إنها مش بتعمل شغل tsc.
ملف .tsx وenum
Node 26 بيشيل أنواع TypeScript البسيطة من ملف .ts لوحده، من غير حزمة tsx. في حاجات لسه محتاجة الحزمة:
- الامتداد
.tsx:node hi.tsxطلّعERR_UNKNOWN_FILE_EXTENSIONللامتداد.tsx.tsx hi.tsxطبع الناتج عادي. - الـ
enum:node enum.tsطلّعERR_UNSUPPORTED_TYPESCRIPT_SYNTAXوقال إن الـ enum مش مدعوم في وضع الشيل بس.tsx enum.tsطبع القيمةs.
enum.ts
enum Size { S = "s", M = "m" }console.log(Size.S);يعني Node لوحده مش بديل كامل لحزمة tsx، وtsx مش بديل لفحص tsc.
خلّصت الفصل لما
🧠 اختبر نفسك
١) tsx عدّى ملف فيه number والقيمة نص. ده معناه الأنواع سليمة؟
لأ. الحزمة مش بتفحص. الغلط ظهر بعدين كـ
TypeError لما اتنده toFixed.٢) ليه node hi.tsx فشل وtsx hi.tsx نجح؟
Node 26 مش بيفهم امتداد
.tsx. حزمة tsx بتحوّله وبعدين تسلّمه لـ Node.٣) --tsconfig في أمر tsx بيعمل typecheck؟
لأ. ده مسار ملف الإعداد للتحويل. الفحص لسه بأمر
tsc.