string, number, boolean — asosiy turlar
Chegirma funksiyasi yozilgan, ishlab turibdi. Bir kuni natija NaN chiqadi:
function chegirma(narx, foiz) {
return narx * (1 - foiz / 100);
}
chegirma(8_000_000, "o'n besh"); // NaN — son o'rniga matn berildi
JavaScript buni to'xtatmadi. Xatoni foydalanuvchi ko'rdi, siz emas. TypeScript da bu xato yozilayotganda ko'rinadi.
string
Har qanday matn: ism, xabar, email, manzil.
const ism: string = "Jasur";
const shahar: string = "Toshkent";
const email: string = "jasur@mail.com";
Boshqa tur bersangiz — TypeScript to'xtatadi:
let ism: string = "Jasur";
ism = 42;
// ❌ Type 'number' is not assignable to type 'string'
number
Butun son ham, kasr son ham. JavaScript da integer va float alohida tur emas — ikkalasi ham number.
const yosh: number = 25;
const narx: number = 8_000_000; // _ faqat ko'z uchun — 8000000 bilan bir xil
const foiz: number = 0.15;
Boshidagi muammo TypeScript bilan:
function chegirma(narx: number, foiz: number): number {
return narx * (1 - foiz / 100);
}
chegirma(8_000_000, "o'n besh");
// ❌ Argument of type 'string' is not assignable to parameter of type 'number'
Muharrir darhol qizil chiziq ko'rsatadi — NaN ni runtime da izlash shart emas.
boolean
Faqat true yoki false. Tugma bosilganmi? Foydalanuvchi tizimga kirganmi? — bular boolean.
const faol: boolean = true;
const arxivda: boolean = false;
JavaScript da 1 truthy, 0 falsy — ba'zi dasturchilar boolean o'rniga son ishlatadi. TypeScript buni to'xtatadi:
const faol: boolean = 1;
// ❌ Type 'number' is not assignable to type 'boolean'
const faol: boolean = true; // ✅
Type inference — annotation har joyda kerak emas
Qiymat berilganda TypeScript turni o'zi tushunadi:
const ism = "Jasur"; // → string
const yosh = 25; // → number
const faol = true; // → boolean
Qiymat berilgandan keyin tur "qotib qoladi" — boshqa tur bersangiz xato:
let yosh = 25;
yosh = 30; // ✅
yosh = "yigirma besh"; // ❌
Annotation kerak bo'lgan joy: bo'sh o'zgaruvchi va funksiya parametrlari.
let xabar: string; // qiymat yo'q — annotation kerak
function log(n: number) { // parametr — annotation kerak
console.log(n);
}
Kichik harf — muhim
String, Number, Boolean — JavaScript ning eski ob'ektlari, primitive emas. Ishlatilmaydi:
const ism: String = "Jasur"; // ❌ — eskirgan
const ism: string = "Jasur"; // ✅ — to'g'ri
Tez-tez uchraydigan xatolar
+ bilan matn va son aralashib ketishi:
// TypeScript ruxsat beradi — lekin natija "Narx: 50000" (string)
return "Narx: " + narx;
// ✅ — aniq va xavfsiz
return `Narx: ${narx} so'm`;
Bo'sh o'zgaruvchiga annotation yozmaslik:
let xabar; // TypeScript: any — tekshiruv yo'q
xabar = 42; // TypeScript jim — xavfli
let xabar: string; // ✅
xabar = 42; // ❌ — darhol ko'rsatadi
Xulosa
tur misol qachon
──────── ───────────────────── ──────────────────────────
string "Jasur", "Toshkent" matn, ism, email, manzil
number 25, 8_000_000, 0.15 son — butun va kasr ham
boolean true, false ha/yo'q, faol/nofaol
Kichik harf: string, number, boolean — String, Number, Boolean emas.
Annotation ko'p joyda shart emas — TypeScript o'zi tushunadi. Funksiya parametrlari va bo'sh o'zgaruvchilarda yozing.
Keyingi dars
6-dars: null, undefined, void — farqlari va ishlatilishi