توابع (Functions)
«تابع (Function)» مثل یک ماشین حساب کوچک است. ورودی می گیرد، کاری می کند، و خروجی می دهد. در تایپ اسکریپت، نوع ورودی و خروجی را مشخص می کنیم تا خطاها زود کشف شوند.
نوع بازگشتی (Return Type)
می توانیم نوع خروجی را صریح بنویسیم تا کد شفاف بماند.
function getTime(): number {
return new Date().getTime();
}
نکته: اگر نوع را ننویسید، تایپ اسکریپت تلاش می کند آن را حدس بزند.
void یعنی بدون خروجی
نوع void یعنی تابع هیچ مقداری برنمی گرداند.
function printHello(): void {
console.log('Hello!');
}
پارامترها (Parameters)
برای پارامترها هم مثل متغیرها نوع می نویسیم.
function multiply(a: number, b: number) {
return a * b;
}
نکته: بدون نوع صریح، ممکن است any شود و ایمنی کم شود.
پارامتر اختیاری (Optional)
با ? پارامتر را اختیاری می کنیم؛ یعنی ممکن است نیاید.
function add(a: number, b: number, c?: number) {
return a + b + (c || 0);
}
مقدار پیش فرض (Default)
پارامتر پیش فرض یعنی اگر ورودی ندادیم، این مقدار استفاده شود.
function pow(value: number, exponent: number = 10) {
return value ** exponent;
}
پارامترهای نام دار (Named)
با شیء، ورودی ها را نام دار می کنیم تا خواناتر شوند.
function divide({ dividend, divisor }: { dividend: number, divisor: number }) {
return dividend / divisor;
}
rest پارامترها
rest همیشه آرایه است؛ بنابراین نوع آن باید آرایه باشد.
function add(a: number, b: number, ...rest: number[]) {
return a + b + rest.reduce((p, c) => p + c, 0);
}
نوع تابع با Type Alias
می توانیم نوع تابع را جدا تعریف کنیم و دوباره استفاده کنیم.
type Negate = (value: number) => number;
const negateFunction: Negate = (value) => value * -1;
گام های عملی
- برای هر تابع، نوع بازگشتی را بنویس.
- برای هر پارامتر، نوع شفاف تعیین کن.
- از اختیاری و پیش فرض، هوشمندانه استفاده کن.
بخش انواع اتحادی را ببین تا ورودی ها را منعطف کنی. همچنین به نام مستعار و اینترفیس ها برای تعریف نوع های قابل استفاده مجدد سر بزن. برای مرجع سریع، همین صفحه توابع را نشانه گذاری کن.
جمع بندی سریع
- نوع ورودی و خروجی را مشخص کن.
voidیعنی بدون خروجی.- اختیاری با
?تعریف می شود. - rest همیشه آرایه است.
- Type Alias کد را تمیزتر می کند.