string, number, boolean — asosiy turlar

~15 daq · TypeScript · 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