سلام دوستان 🖐️
همونطور که می‌دونیم تایپ‌اسکریپت علاوه‌ بر اینکه اجازه میده که تایپ‌های مد نظر خودمون رو بسازیم، چند تایپ کاربردی رو ارائه میده که با اونها می‌تونیم تایپ‌های موجود رو دستکاری و به یک حالت دیگه تبدیلشون کنیم. به این تایپ‌ها که بصورت گلوبال در دسترس هستن می‌گیم Utility Types که توی این دو قسمت می‌خوایم با اونها آشنا بشیم.

 

۱. تایپ Partial<Type>

فرض کنیم یک تایپ داریم به صورت زیر:

type Post = {
  title: string;
  status: string;
}

در حالت معمولی اگه بخوایم یک آبجکت از نوع این تایپ بسازیم، باید همهٔ پراپرتی‌های این تایپ رو پیاده‌سازی کنیم:

const newPost: Post = {
  title: 'Hello world!'
}

// Error: Property 'status' is missing
//        in type '{ title: string; }'
//        but required in type 'Post'

اما با Partial می‌تونیم پیاده‌سازی این پراپرتی‌ها رو برای آبجکتمون اختیاری کنیم. در واقع Partial یک تایپ رو می‌گیره و یک تایپ جدید بهمون برمی‌گردونه که همهٔ پراپرتی‌های اون اختیاری هستن:

type Post = {
  title: string;
  status: string;
}

type PartialPost = <<Partial>><Post>;

const post1: PartialPost = { title: 'Hello' };
const post2: PartialPost = { status: 'Draft' };
const post3: PartialPost = { };

برای اجرای این کد رو ببینید.

 

۲. تایپ Required<Type>

این تایپ دقیقاً برعکس تایپ Partial هست. اگه یک تایپ داشته باشیم که بعضی از پراپرتی‌های اون اختیاری باشن، با Required می‌تونیم یک تایپ جدید بسازیم که همهٔ پراپرتی‌های اون اجباری هستن:

type Post = {
  title?: string;
  status?: string;
}

type RequiredPost = <<Required>><Post>;

const post: RequiredPost = { 
  title: 'Hello'
};

// Error: Property 'status' is missing
//        in type '{ title: string; }'
//        but required in type 'Required<Post>'

برای اجرای این کد رو ببینید.