۴
توابع (Functions)
تایپبندی پارامترهای ورودی و مقادیر خروجی توابع.
تایپبندی توابع
در تایپاسکریپت، میتونیم به طور دقیق مشخص کنیم که یه تابع چه نوع پارامترهایی رو قبول میکنه و چه نوع مقداری رو برمیگردونه. این کار خوانایی و اطمینان کد رو به شدت بالا میبره.
// پارامترها و مقدار خروجی، هر دو تایپبندی شدهاند
function add(num1: number, num2: number): number {
return num1 + num2;
}
// اگه تابع چیزی برنگردونه، از void استفاده میکنیم
function logMessage(message: string): void {
console.log(message);
}
let result: number = add(10, 20);
// let wrongResult: string = add(5, 5); // Error! Type 'number' is not assignable to type 'string'.
پارامترهای اختیاری و پیشفرض
میتونیم بعضی از پارامترهای تابع رو اختیاری کنیم (با `?`) یا براشون یه مقدار پیشفرض در نظر بگیریم.
// lastName اختیاری است
function buildName(firstName: string, lastName?: string): string {
if (lastName) {
return firstName + " " + lastName;
} else {
return firstName;
}
}
// system دارای مقدار پیشفرض است
function logIn(username: string, system: string = "Main Server"): void {
console.log(`${username} logged into ${system}`);
}
let name1 = buildName("علی"); // "علی"
let name2 = buildName("علی", "رضایی"); // "علی رضایی"
logIn("admin"); // "admin logged into Main Server"
تمرین! 🧠
یه تابع به اسم `calculateArea` بنویس که طول و عرض (هر دو از نوع عدد) رو بگیره و مساحت رو برگردونه. کاری کن که اگه عرض داده نشد، شکل رو مربع فرض کنه و از مقدار طول برای عرض هم استفاده کنه (پارامتر اختیاری).
جواب تمرین
function calculateArea(length: number, width?: number): number {
// اگه عرض وجود نداشت، اون رو برابر با طول قرار بده
const finalWidth = width ?? length;
return length * finalWidth;
}
const rectangleArea = calculateArea(10, 5); // 50
const squareArea = calculateArea(7); // 49
console.log(`مساحت مستطیل: ${rectangleArea}`);
console.log(`مساحت مربع: ${squareArea}`);