الحزمتين · فصل ٢

حزمة typescript — أمر tsc

tsc · noEmit · emit · TS2322 · strict
🎯 الهدف: تعرف إن حزمة typescript بتدي tsc، وإنه بيمسك غلط الأنواع وبيطلّع JavaScript من غير ما يشغّل البرنامج.

الحزمة بتدي مترجم

pnpm add -D typescript بيثبت أمر واحد: tsc. النسخة اللي اتجرّبت هنا 7.0.2.

tsc بيعمل حاجتين، ومش بيعمل التالتة:

  • بيفحص الأنواع على tsconfig.json.
  • يقدر يكتب JavaScript في dist لو noEmit مش شغّال.
  • مش بيشغّل الملف. مفيش console.log هيظهر من tsc نفسه.

الفحص بيقف على الغلط

الملف ده فيه نوع غلط: السن متعرّف number والقيمة نص.

bad.ts
const age: number = "٣٠";console.log(age.toFixed(0));

pnpm exec tsc --noEmit وقف وطلع:

bad.ts(1,7): error TS2322: Type 'string' is not assignable to type 'number'.

السطر التاني متتنفّذش، لأن tsc مش برنامج تشغيل. --noEmit يعني افحص بس ومتكتبش ملفات.

الإخراج بيشيل النوع

ملف سليم:

src.ts
export const n: number = 1;

مع outDir قيمته dist، الأمر tsc كتب dist/src.js بالشكل ده:

export const n = 1;

النوع : number اختفى. الملف الناتج JavaScript يتشغّل بعد كده بـ node dist/src.js.

خلّصت الفصل لما

🧠 اختبر نفسك
١) tsc --noEmit لقى TS2322. البرنامج اشتغل؟
لأ. الأمر بيفحص وبيوقف. التشغيل مش شغله.
٢) ليه النوع : number مش موجود في dist/src.js؟
لأن tsc بيطلّع JavaScript، والأنواع بتتشال في الإخراج.