گاهی وقت ها در تایپ اسکریپت , نوع خاصی از type یا interface موجود نیازمون میشه با Utility Types ها ما میتونیم type یا interface موجود رو به شکل خاصی تغییر بدیم میشه گفت یک instance با تغییرات و شرطهایی ازشون بسازیم....
به دلیل زیار بودن تعداد Utility Types ها اونارو در چند بخش بهتون توضیح میدم.
تایپ partial تایپهای شما رو اختیاری میکنه(optional)
به صورتی که تایپ خود را به partial پاس بدید و مقدار برگشتی آن تایپ تماما optional است
Partial<Type>
به تابع updateTodo در لاین 6 دقت کنید که argument دوم آن همان تایپ Todo اما از جنس Partial میباشد به همین خاطر در لاین 15 وقتی که تابع رو call میکنیم parameter دوم optional شده و میتوانیم title رو پاس ندیم.
تایپ Required همان طور از اسمش پیداست تمامی مقادیر رو اجباری میکنه دقیقا برعکس Partial
همانطور میبینید در لاین 8 وقتی که b رو به آبجکت اضافه نکردهایم چون اینترفیس Props اجباری شده است خطا دریافت میکنیم.
این utility Type یک اینترفیس یا تایپ را Readonly میکنه! یعنی وقتی به متغیری این نوع تایپ داده بشه به هیچ صورت تغییر داده نمیشه و فقط خواندنیه....
در لاین 9 مقدار title تغییر داده نمیشه چون readonly هستش
تایپ record میتونه دو تایپ رو با هم ترکیب کنه به صورتی که پارامتر اول key و پارامتر دوم type هستش
برای درک بهتر دو نمونه ببینیم.
تایپ Colors با Record تعریف شده و چندتا key اول گرفته بعد تایپ اونا رو دریافت کرده خروجی این تایپ همانند لاین 5 هستش.
نمونه دوم:
تایپ pick میتونه خیلی پرکاربرد باشه
این تایپ بر اساس انتخاب شما تایپ دلخواهتان را برمیگردونه نحوه استفاده از آن به این صورته که
پارامتر اول type رو از شما میگیره و پارامتر دوم آن keys . که مقادیری هستند که برای شما از دل type انتخاب میکنه...
به زبونه ساده بهش میگید بره از یک تایپ یک یا چندتا مقدار برداره و تایپ جدیدی رو برگردونه
در لاین 7 ما از اینترفیس Todo مقادیر title , completed رو انتخاب کردهایم...
در نتیجه یک تایپ جدید داریم که شامل title , completed میباشد
تایپ omit به این صورته که یک تایپ از تایپ مورد نظر به غیر از مقادیر keys به شما برمیگردونه...
یعنی همه ی type به غیر از keys تقریبا شبیه pick هستش.
همانطور میبینید مقدار description رو از انتخابمون حذف کردیم و تایپ جدیدمون فقط شامل
title,completed,createdAt میباشد.
امیدوارم تونسته باشم با utility تایپ ها آشناتون کنم
همانطور در مقدمه گفتم utility types در چند بخش توضیح میدم پس منتظر بخشهای دیگه هم باشید.