Optional, default va rest parametrlar TypeScript da
Salomlash funksiyasi — tilni ham ko'rsatish mumkin, lekin ko'rsatilmasa o'zbek tilida ishlashi kerak. Yoki nechta argument berilishini bilmaysiz — hammasi yig'ilishi kerak.
Bu uch holat uchun TypeScript da uch xil parametr turi bor: optional, default, rest.
Optional parametr — ?
Parametr berilishi ham, berilmasligi ham mumkin. ? bilan belgilanadi:
function salomlash(ism: string, til?: string): string {
if (til === "en") return `Hello, ${ism}!`;
return `Salom, ${ism}!`;
}
salomlash("Jasur"); // ✅ — "Salom, Jasur!"
salomlash("Jasur", "en"); // ✅ — "Hello, Jasur!"
Optional parametr ichida string | undefined bo'ladi — ishlatishdan oldin tekshirish kerak:
function formatlash(matn: string, katta?: boolean): string {
return katta ? matn.toUpperCase() : matn;
// katta: boolean | undefined
// undefined falsy — if/ternary da xavfsiz
}
Default parametr — standart qiymat
Parametr berilmasa — standart qiymat ishlatiladi:
function salomlash(ism: string, til: string = "uz"): string {
if (til === "en") return `Hello, ${ism}!`;
if (til === "ru") return `Привет, ${ism}!`;
return `Salom, ${ism}!`;
}
salomlash("Jasur"); // "Salom, Jasur!" — til = "uz"
salomlash("Jasur", "en"); // "Hello, Jasur!"
salomlash("Jasur", "ru"); // "Привет, Jasur!"
Default parametr turi annotatsiyasiz ham aniqlanadi — "uz" berilsa, TypeScript string ekanini tushunadi.
Optional (?) vs default — farqi:
til?: string → undefined bo'lishi mumkin, tekshirish kerak
til: string = "uz" → har doim string, standart "uz"
Rest parametr — noma'lum sondagi argumentlar
... bilan belgilanadi — barcha qolgan argumentlar massiv sifatida keladi:
function yig_indirma(...sonlar: number[]): number {
return sonlar.reduce((jami, son) => jami + son, 0);
}
yig_indirma(1, 2, 3); // 6
yig_indirma(10, 20, 30, 40); // 100
yig_indirma(); // 0 — bo'sh massiv
Rest parametr oxirida bo'lishi shart:
function xabar(sarlavha: string, ...qatorlar: string[]): void {
console.log(sarlavha);
qatorlar.forEach(q => console.log(" -", q));
}
xabar("Xatolar:", "email noto'g'ri", "parol qisqa", "ism bo'sh");
// Xatolar:
// - email noto'g'ri
// - parol qisqa
// - ism bo'sh
Parametrlar tartibi
majburiy → default → optional → rest
function fn(
a: string, // majburiy
b: number = 0, // default
c?: boolean, // optional
...d: string[] // rest
): void { ... }
Destructuring parametr
Ob'ekt parametrida destructuring ishlatish mumkin:
function profil({ ism, yosh = 18 }: { ism: string; yosh?: number }): string {
return `${ism}, ${yosh} yosh`;
}
profil({ ism: "Jasur" }); // "Jasur, 18 yosh"
profil({ ism: "Vali", yosh: 25 }); // "Vali, 25 yosh"
Tez-tez uchraydigan xatolar
Optional parametrdan keyin majburiy parametr:
function fn(a?: string, b: number): void { ... }
// ❌ — A required parameter cannot follow an optional parameter
Optional va default parametrlar oxirida bo'lishi kerak.
Rest parametr o'rtada:
function fn(...a: string[], b: number): void { ... }
// ❌ — A rest parameter must be last in a parameter list
Xulosa
ism: string — majburiy
ism?: string — optional (string | undefined)
ism: string = "uz" — default qiymat (har doim string)
...ismlar: string[] — rest (nechta bo'lsa ham)
function fn(
majburiy: string,
default_: number = 0,
optional?: boolean,
...rest: string[]
): void { ... }
Keyingi dars
24-dars: Function overload — bir nom, turli imzo