JavaScript'ning dinamik tiplilik muammosi, TypeScript kompilyatsiya jarayoni (type erasure) va tsconfig.json orqali loyihani sozlash — test va debugging mashqlari bilan.
TypeScript — Microsoft tomonidan yaratilgan, JavaScript ustiga statik tip tekshiruvini qo'shuvchi til. Bu bob boshqalarga qaraganda kengroq — TypeScript'ning "nega"sini, kompilyatsiya jarayonini va loyihani sozlashni chuqur yoritadi.
JavaScript — dinamik tipli til: o'zgaruvchining turi runtime'da (dastur ishlayotgan paytda) aniqlanadi. Bu moslashuvchanlik beradi, lekin katta loyihalarda xatolarni kech (foydalanuvchida) aniqlashga olib keladi.
script.jsJavaScriptfunction calculateTotal(price, quantity) {return price * quantity;}calculateTotal("100", 5); // "100100100100100" — kutilmagan natija!calculateTotal(100); // NaN — quantity undefined
Bu ikkala chaqiruv ham JavaScript'da hech qanday xato bermaydi — muammo faqat dastur ishga tushgandan keyin, kutilmagan natija sifatida namoyon bo'ladi.
TypeScript — aynan shu turdagi xatolarni yozish paytida (compile vaqtida), dastur ishga tushishidan oldin aniqlash uchun yaratilgan.
TypeScript — brauzerda to'g'ridan-to'g'ri ishlamaydi. U avval "compile" (aniqrog'i, "transpile") qilinib, oddiy JavaScript'ga aylantiriladi, tiplar esa bu jarayonda olib tashlanadi.
code.textTEXT.ts fayl (tiplar bilan)↓TypeScript Compiler (tsc)↓Tip tekshiruvi (xatolar shu yerda aniqlanadi)↓.js fayl (tiplarsiz, brauzer tushunadigan)
index.tsTypeScript// input.tsfunction greet(name: string): string {return `Salom, ${name}`;}
script.jsJavaScript// output.js (compile qilingandan keyin)function greet(name) {return `Salom, ${name}`;}
terminal.shBashnpm install -D typescriptnpx tsc --init # tsconfig.json yaratadinpx tsc # barcha .ts fayllarni compile qiladi
data.jsonJSON{"compilerOptions": {"target": "ES2020","module": "ESNext","strict": true,"outDir": "./dist","rootDir": "./src"}}
💡 Key Idea
"strict": true — TypeScript'ning eng qattiq tip tekshiruvi rejimini yoqadi. Yangi loyihalar uchun bu deyarli har doim tavsiya etiladi, chunki u ko'plab potentsial xatolarni oldindan aniqlaydi.
Task: TypeScript'ni loyihangizga o'rnating va oddiy .ts faylini compile qiling.
Task: tsconfig.json yaratib, strict rejimini yoqing va bitta atayin xato (masalan noto'g'ri tur bilan funksiya chaqiruvi) yozib, compiler xatosini kuzating.
index.tsTypeScriptfunction add(a: number, b: number) {return a + b;}console.log(add("5", "10"));
Your Task: Bu kod compile vaqtida xato beradimi? Nega?
<details> <summary>Solution</summary> Ha, xato beradi: `Argument of type 'string' is not assignable to parameter of type 'number'`. TypeScript `a` va `b`ning `number` turida bo'lishini talab qiladi, `"5"` va `"10"` — string. Bu — aynan JavaScript'da yashirin qolib, TypeScript'da ochiq bo'ladigan xato turiga misol. </details>TypeScript — JavaScript'ga statik tip tekshiruvini qo'shib, xatolarni compile vaqtida aniqlash imkonini beradi. U brauzerda to'g'ridan-to'g'ri ishlamaydi — avval JavaScript'ga compile qilinadi, tiplar esa bu jarayonda olib tashlanadi. tsconfig.json — loyiha konfiguratsiyasining markazi, strict: true esa eng qattiq tip xavfsizligini yoqadi.
strict: true — yangi loyihalar uchun tavsiya etiladigan sozlamaterminal.shBashnpm install -D typescriptnpx tsc --initnpx tsc
data.jsonJSON{ "compilerOptions": { "strict": true, "target": "ES2020" } }
Mavzu bo‘yicha tushunchalaringizni interaktiv test orqali sinovdan o‘tkazing va natijalarni bilib oling.
Darslikda o‘rganilgan qoidalarga asosan real kod yozing, testlardan o‘tkazing va yechimlarni mustahkamlang.
Test Sinovi
Hali topshirilmagan (kamida 75% kerak)
Amaliy Masalalar
0 / 2 ta yechildi (kamida 75% kerak)
Dars sifati va mazmunini yaxshilash uchun o‘z haqqoniy bahoingizni qoldiring.
Mavzuni to‘liq o‘zlashtirish uchun test sinovi, amaliy kodlash va bog‘liq darslar
O‘z bilimingizni interaktiv test savollari orqali tekshiring va darhol xatolarni tahlil qiling.
Nazariyani real kod yozish bilan mustahkamlang, avtomatik testlardan o‘ting va XP to‘plang.
Kurs bo‘yicha keyingi va bog‘liq mavzular: