۵۰ درصد تخفیف ویژه برای همه دوره‌ها از شنبه

تایپ Partial در تایپ اسکریپت یک تایپ کاربردی است که دقیقا کار متضاد Required را انجام می‌دهد. یعنی، تمام ویژگی‌های یک تایپ را به صورت اختیاری تنظیم می‌کند. در این مقاله قصد داریم تا روش کارکرد تایپ Partial در تایپ اسکریپت را باهم بررسی کنیم.

تایپ Partial در تایپ اسکریپت

ما در تایپ اسکریپت می‌توانیم یک تایپ را با استفاده از یک

?
? به صورت اختیاری تعریف کنیم. به عنوان مثال، در کد زیر
lastName
lastName اختیاری است. بنابراین، حتی اگر
firstUser
firstUser دارای تایپ User هم باشد، می‌توانیم
lastName
lastName را حذف کنیم زیرا، یک ویژگی اختیاری می‌باشد و وجود آن ضروری نیست.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
type User = {
firstName: string,
lastName?: string
}
let firstUser:User = {
firstName: "John"
}
type User = { firstName: string, lastName?: string } let firstUser:User = { firstName: "John" }
type User = {
    firstName: string,
    lastName?: string
}

let firstUser:User = {
    firstName: "John"
}

گاهی اوقات، ممکن است تایپی که در کد به ارث می‌بریم یا از آن استفاده می‌کنیم تایپ‌های اختیاری نداشته باشد، اما می‌دانیم که در شرایط خاصی این احتمال وجود دارد که برخی از ویژگی‌ها از بین رفته باشند. به عنوان مثال در قطعه کد زیر،

lastName
lastName دیگر ویژگی اختیاری نیست، اما
firstUser
firstUser آن را شامل نمی‌شود:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
type User = {
firstName: string,
lastName: string
}
let firstUser:User = {
firstName: "John"
}
type User = { firstName: string, lastName: string } let firstUser:User = { firstName: "John" }
type User = {
    firstName: string,
    lastName: string
}

let firstUser:User = {
    firstName: "John"
}

اگر این کد را اجرا کنیم با یک خطا روبه‌رو می‌شویم، زیرا انتظار داریم که

firstUser
firstUser از تایپ User، حتما ویژگی
lastName
lastName را دارا باشد:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Property `lastName` is missing in type `{ firstName: string; }` but required in type `User`.
Property `lastName` is missing in type `{ firstName: string; }` but required in type `User`.
Property `lastName` is missing in type `{ firstName: string; }` but required in type `User`.

اگر بخواهیم از بروز چنین خطایی جلوگیری کنیم، باید تایپ

firstUser
firstUser را به
Partial<User>
Partial<User> تغییر دهیم. در نتیجه این کار، به تایپ اسکریپت می‌گوییم که هر ویژگی در تایپ User را به صورت اختیاری تنظیم کند:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
type User = {
firstName: string,
lastName: string
}
let firstUser:Partial<User> = {
firstName: "John"
}
type User = { firstName: string, lastName: string } let firstUser:Partial<User> = { firstName: "John" }
type User = {
    firstName: string,
    lastName: string
}

let firstUser:Partial<User> = {
    firstName: "John"
}

در نهایت، تعریف مجدد تایپ User به صورت زیر می‌باشد:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
type User = {
firstName?: string,
lastName?: string
}
type User = { firstName?: string, lastName?: string }
type User = {
    firstName?: string,
    lastName?: string
}

تنها تفاوت بین این دو کد این است که ما اکنون می‌توانیم از هر دو آن‌ها استفاده کنیم. اگر بخواهیم تایپی که داریم ویژگی‌های از بین رفته را داشته باشد، می‌توانیم از Partial استفاده کنیم. اگر این کار را نکنیم، فقط می‌توانیم از تایپ User معمولی بهره‌مند شویم:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
type User = {
firstName: string,
lastName: string
}
let firstUser:Partial<User> = { firstName: "John" }
let secondUser:User = { firstName: "John", lastName: "Doe" }
type User = { firstName: string, lastName: string } let firstUser:Partial<User> = { firstName: "John" } let secondUser:User = { firstName: "John", lastName: "Doe" }
type User = { 
    firstName: string, 
    lastName: string 
}
let firstUser:Partial<User> = { firstName: "John" } 
let secondUser:User = { firstName: "John", lastName: "Doe" }

جمع‌بندی

تایپ Partial مانند بسیاری دیگر از تایپ‌های utility در تایپ اسکریپت، مناسب برای کار با interfaceها یا تایپ‌های سفارشی هستند. در این مقاله سعی کردیم بیشتر با تایپ Partial و روش کارکرد آن آشنا شویم.