1.38.0isFunction
بررسی میکند که آیا یک مقدار تابع است و بهعنوان type guard در TypeScript امکان محدود کردن نوع به تابع را فراهم میکند.
isFunction(value):value is (...args: never[]) => unknownنحوه پیادهسازی
این تابع از عملگر typeof در JavaScript استفاده میکند و بررسی میکند که نتیجه دقیقاً برابر با "function" باشد.
Type guard
نوع بازگشتی `value is (...args: never[]) => unknown` باعث میشود تابع یک TypeScript type guard باشد. در صورت موفق بودن بررسی، نوع مقدار به یک تابع قابل فراخوانی محدود میشود.
رفتار typeof
این بررسی از semantics مربوط به typeof در JavaScript پیروی میکند. بنابراین مقادیری مانند توابع معمولی، arrow functionها، توابع async و classها بهعنوان function شناسایی میشوند.
پارامترها
valueunknownالزامیمقداری که باید بررسی شود.
مقدار بازگشتی
value is (...args: never[]) => unknownاگر مقدار تابع باشد true و در غیر این صورت false برمیگرداند. در صورت true بودن، TypeScript نوع مقدار را به یک نوع تابع قابل فراخوانی محدود میکند.
مثالها
استفاده پایه
بررسی اینکه یک مقدار تابع است یا خیر.
isFunction(() => {});
// true
isFunction("hello");
// falseمحدود کردن نوع
این type guard مقدار unknown را به یک نوع تابع قابل فراخوانی محدود میکند.
const value: unknown = () => "hello";
if (isFunction(value)) {
value();
// value is narrowed to (...args: never[]) => unknown
}توابع نامگذاریشده
توابع معمولی نامگذاریشده بهعنوان تابع شناسایی میشوند.
function greet() {
return "Hello";
}
isFunction(greet);
// trueتوابع async
توابع async نیز شناسایی میشوند، زیرا typeof برای آنها مقدار "function" برمیگرداند.
async function loadData() {
return "data";
}
isFunction(loadData);
// trueکلاسها
کلاسهای JavaScript نیز توسط typeof بهعنوان function شناسایی میشوند.
class User {}
isFunction(User);
// trueمقادیر غیرتابعی
آبجکتها، رشتهها، اعداد، null و undefined مقدار false برمیگردانند.
isFunction({});
// false
isFunction(42);
// false
isFunction(null);
// false
isFunction(undefined);
// false