5-amaliy. Funksiyalar Funktsiyalar - bu vazifani bajarish uchun bajariladigan ko'rsatmalar to'plami. Javascriptda kodning aksariyati funksiyalar sifatida yoziladi va muhim rol o'ynaydi. Typescriptda sizda sinf, interfeys, modullar, nomlar bo'shliqlari mavjud, ammo funksiyalar hali ham muhim rol o'ynaydi. Javascriptdagi funktsiya va typcript funktsiyasi o'rtasidagi farq typcript funksiyasida mavjud bo'lgan qaytarish turidir.
JavaScript funksiya: function add (a1, b1) {
return a1+b1;
}
Yozish funksiyasi: function add(a1 : number, b1: number) : number {
return a1 + b1;
}
Yuqoridagi funksiyalarda funksiya nomi qo'shiladi, a1 va b1 parametrlari har ikkalasi raqam turiga mansub, qaytish turi ham raqam turiga mansub bo’ladi. Agar siz biror funksiya satrini uzatsangiz, u JavaScript-ga kompilyatsiya qilinganda kompilyasiya vaqtida xatolik hosil bo’ladi.
Qo'shish funksiyasini chaqirish: let x = add(5, 10) ; // will return 15
let b = add(5); // will throw an error : error TS2554: Expected 2 arguments, but got 1.
let c = add(3,4,5); // will throw an error : error TS2554: Expected 2 arguments, but got 3.
let t = add("Harry", "John");// will throw an error : error TS2345: Argument of type '"Harry"' is not assignable to parameter of type 'number'.
a1 va b1 parametrlar majburiy parametrlardir va shu tarzda qabul qilinmasa, xatoga yo'l qo'yiladi. Bundan tashqari, parametr turi va qaytariladigan qiymatning turi juda muhim va ularni aniqlangandan keyin o'zgartirib bo'lmaydi.
Funktsiya uchun ixtiyoriy parametrlar Javascriptda barcha funksiya parametrlari ixtiyoriy hamda ular berilmasa, aniqlanmagan bo’ladi. Ammo, agar siz yuborishingiz kerak bo'lgan parametrlarni aniqlagan bo'lsangiz, xuddi shu narsa matn terish uchun to'g'ri kelmaydi, lekin agar siz biron bir parametrni ixtiyoriy qoldirmoqchi bo'lsangiz, buni amalga oshirishingiz mumkinmi? quyida ko'rsatilgandek parametr nomiga qarshi:
function getName(firstname: string, lastname?: string): string {
return firstname + lastname;
}
let a = getName("John"); // will return Johnundefined.
let b = getName("John", "Harry"); // will return JohnHarry
let c = getName("John", "H", "Harry"); // error TS2554: Expected 1-2 arguments, but got 3.
E'tibor bering, ixtiyoriy parametrlar funksiyada faqat oxirgisida aniqlanishi kerak, birinchi parametr ixtiyoriy bo'lishi mumkin emas, ikkinchisi esa majburiydir. Bitta parametrli kompilyator bilan funksiyani chaqirish xato xabarini ko'rsatadi. Shuning uchun ixtiyoriy parametrlarni oxirida saqlash kerak.