TypeScript massiv va kortej (tuple)
Shahar nomlari massiviga tasodifan son qo’shilib qolsa, xato massivni yaratgan joyda emas, undan foydalanadigan joyda chiqadi. Sababini topish uzoq davom etadi.
TypeScript massivga qanday qiymat tushishi mumkinligini oldindan belgilashga imkon beradi.
Massiv tipi
Eng ko’p ishlatiladigan yozuv — tip nomidan keyin kvadrat qavs:
const cities: string[] = ["Toshkent", "Samarqand", "Buxoro"];
const scores: number[] = [90, 85, 78];
console.log(cities.length);
console.log(scores.map((score) => score + 5));
3
[ 95, 90, 83 ]
string[] — “matnlardan iborat massiv” degani. Boshqa tip tushsa, xato
chiqadi:
const scores: number[] = [90, 85, 78];
scores.push("yuz");
example.ts(2,13): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
Diqqat qiling: xato push chaqirilgan qatorda ko’rsatildi — ya’ni
noto’g’ri qiymat massivga tushgan joyda, uni ishlatgan joyda emas.
Array<T> — ikkinchi yozuv
Xuddi shu narsani boshqacha yozish mumkin:
const flags: Array<boolean> = [true, false];
console.log(flags[0]);
true
string[] va Array<string> — bir xil tip, farqi yo’q. Burchakli qavs
ichidagi yozuv generik deb ataladi va uni
generiklar darsida batafsil ko’rasiz.
Aralash massiv
Massivda ikki xil tip bo’lishi kerak bo’lsa, qavs ishlatiladi:
const mixed: (string | number)[] = ["Aziz", 85];
console.log(mixed);
[ 'Aziz', 85 ]
Ichma-ich massiv
const matrix: number[][] = [
[1, 2],
[3, 4],
];
console.log(matrix[1][0]);
3
number[][] — “sonlar massivlaridan iborat massiv”. Kvadrat qavs soni
chuqurlikni bildiradi.
Kortej — uzunligi belgilangan massiv
Ba’zan massivdagi element soni ham, tartibi ham aniq bo’ladi. Koordinata shunday: har doim ikkita son, birinchisi kenglik, ikkinchisi uzunlik.
const point: [number, number] = [41.31, 69.24];
const [latitude, longitude] = point;
console.log(`Kenglik: ${latitude}, uzunlik: ${longitude}`);
Kenglik: 41.31, uzunlik: 69.24
Ikkinchi qatordagi yozuv — destructuring. U ES6 sintaksis darsida ko’rilgan; TypeScript bu yerda har o’zgaruvchining tipini kortejdan o’zi oladi.
Uzunlik buzilsa, xato chiqadi:
type Point = [number, number];
const bad: Point = [10, 20, 30];
example.ts(2,7): error TS2322: Type '[number, number, number]' is not assignable to type 'Point'.
Source has 3 element(s) but target allows only 2.
Xabarning ikkinchi qatori sababni to’g’ridan-to’g’ri aytadi: manbada uchta element, maqsad esa faqat ikkitasiga ruxsat beradi.
Kortejda tiplar har xil bo’lishi mumkin
const entry: [string, number] = ["Aziz", 85];
console.log(`${entry[0]} — ${entry[1]} ball`);
Aziz — 85 ball
Bu yerda birinchi pozitsiya doim matn, ikkinchisi doim son. Tartibni almashtirib bo’lmaydi.
Massiv yoki kortej — qaysi biri
| Holat | Tanlov |
|---|---|
| Elementlar soni o’zgaradi | Massiv — string[] |
| Barcha elementlar bir xil ma’noda | Massiv |
| Soni qat’iy belgilangan | Kortej — [number, number] |
| Har pozitsiyaning o’z ma’nosi bor | Kortej |
Amalda massiv ancha ko’p ishlatiladi. Kortej esa aniq ikki holatda qulay: koordinata kabi juftliklar va funksiyadan bir nechta qiymat qaytarish.
Obyektlar massivi
Amalda eng ko’p uchraydigan tuzilma — obyektlardan iborat massiv:
const students: { name: string; score: number }[] = [
{ name: "Aziz", score: 85 },
{ name: "Malika", score: 52 },
];
const passed = students.filter((student) => student.score >= 60);
console.log(passed.length);
1
Bu yozuv uzun chiqdi. Uni qisqartirish yo’lini keyingi darsda ko’rasiz — obyekt shakli alohida nom bilan e’lon qilinadi.
Amaliy mashq
string[]tipidagi shaharlar massivini yarating vapushbilan yangi shahar qo’shing;- Shu massivga son qo’shib ko’ring va
TS2345xato xabarini o’qing; - Xuddi shu massivni
Array<string>yozuvi bilan qayta yozing va natija bir xil ekanini tekshiring; (string | number)[]massivini yarating, so’ng qavsni olib tashlab xato chiqishini ko’ring;[string, number]kortejini e’lon qilib, unga uchta element berib ko’ring va xabarning ikkinchi qatorini o’qing;- Kortejni destructuring bilan ikkita o’zgaruvchiga ajrating.
4-qadam eng muhimi: qavs yozuvning ma’nosini butunlay o’zgartiradi va bu chalkashlik boshlovchilarda tez-tez uchraydi.
Qisqacha xulosa
- Massiv tipi
string[]yokiArray<string>shaklida yoziladi — ikkalasi bir xil. - Noto’g’ri tip massivga tushgan joyda ushlanadi, ishlatilgan joyda emas.
- Aralash massivda qavs zarur:
(string | number)[]. - Kortej — uzunligi va pozitsiya tiplari belgilangan massiv:
[number, number]. - Kortej uzunligi e’lon paytida tekshiriladi, lekin
pushuni uzaytirib yuborishi mumkin. - Obyektlar massivi uchun tipni to’g’ridan-to’g’ri yozish uzun chiqadi — keyingi darsda qisqartiriladi.
Keyingi darsda obyekt tiplari — obyekt
shaklini tavsiflash, ixtiyoriy maydon va readonly.