جاوااسکریپت - استفاده از کلیدواژه «is» در تایپاسکریپت چه فایدهای دارد؟
تفاوت زیر چیست؟ من گاهی is را در تایپاسکریپت میبینم اما نتوانستم مزیت استفاده از arg is string در این حالت را بفهمم. جستجو کردم اما اطلاعات زیادی در مورد آن پیدا نکردم. آیا کسی میتواند توضیح دهد؟
const isString = (arg: any): arg is string => typeof arg === "string";
const isString = (arg: any) => typeof arg === "string";
پاسخ شماره ۱
این یک نگهبان نوع تعریفشده توسط کاربر است. این بدان معناست که هنگام فراخوانی isString تایپاسکریپت میداند که نوع را به string محدود کند اگر مقدار true برگرداند.
یک مثال:
declare const foo: string | number;
if (isString(foo)) {
console.log(foo.toLowerCase());
}
اگر تابع یک محافظ نوع سفارشی تعریف نکند، نوع داخل بلوک if همچنان string | number خواهد بود و فراخوانی toLowerCase() باعث ایجاد خطا میشود.
با استفاده از محافظ نوع، کامپایلر نوع را در داخل بلوک if به string محدود میکند.
زمین بازی
