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

  1. string[] tipidagi shaharlar massivini yarating va push bilan yangi shahar qo’shing;
  2. Shu massivga son qo’shib ko’ring va TS2345 xato xabarini o’qing;
  3. Xuddi shu massivni Array<string> yozuvi bilan qayta yozing va natija bir xil ekanini tekshiring;
  4. (string | number)[] massivini yarating, so’ng qavsni olib tashlab xato chiqishini ko’ring;
  5. [string, number] kortejini e’lon qilib, unga uchta element berib ko’ring va xabarning ikkinchi qatorini o’qing;
  6. 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[] yoki Array<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 push uni 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.

Bu dars foydali bo'ldimi?

marta ko'rildi