از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
همه ویژگی های رابط را در TypeScript اختیاری کنید
سرفصلهای مطلب
معرفی
یکی از ویژگی های TypeScript امکان اعلام ویژگی های اختیاری در رابط ها است. این بایت به شما نشان میدهد که چگونه میتوانید تمام ویژگیها را در یک رابط TypeScript اختیاری کنید، که ممکن است در سناریوهای خاصی مانند هنگام کار با دادههای جزئی یا پاسخهای API لازم باشد این کار را انجام دهید.
اختیاری کردن خواص در TypeScript
در تایپ اسکریپت، می توانید با افزودن علامت سوال، ویژگی های اختیاری را در یک رابط تعریف کنید ?
به نام ملک این به TypeScript می گوید که این ویژگی ممکن است روی شی وجود داشته باشد یا نباشد.
بیایید دو روش اصلی برای اختیاری کردن خواص را ببینیم.
روش پایه
همانطور که قبلاً ذکر شد، راه اصلی برای اختیاری کردن یک ویژگی، اضافه کردن علامت سوال است ?
به نام ملک در اینجا یک مثال ساده آورده شده است:
interface User {
id: number;
name?: string;
email?: string;
}
let user: User = { id: 1 };
name
و email
خواص اختیاری هستند. این به این معنی است که user
شی را می توان تنها با یک شی اختصاص داد id
ویژگی، و TypeScript شکایت نخواهد کرد.
استفاده از Utility Types
TypeScript چندین نوع ابزار برای دستکاری انواع فراهم می کند، موجود دیگری Partial<T>
، که تمام خواص را در یک نوع می سازد T
اختیاری. در اینجا روش استفاده از آن آورده شده است:
interface User {
id: number;
name: string;
email: string;
}
type OptionalUser = Partial<User>;
let user: OptionalUser = { id: 1 };
در مثال بالا، OptionalUser
یک نوع جدید است که در آن تمام خواص از User
اختیاری هستند. از این رو، میتوانیم یک شی را فقط با عبارت نشان دهیم id
دارایی به user
.
توجه داشته باشید: این Partial<T>
نوع ابزار ابزاری عالی برای ایجاد انواع با ویژگی های اختیاری است. با این حال، به یاد داشته باشید که باعث می شود همه ویژگی ها اختیاری هستند، نه فقط چند مورد منتخب.
مشکلات احتمالی و روش اجتناب از آنها
اختیاری کردن خواص بدون مشکلات بالقوه نیست. یکی از مشکلات رایج این موضوع این است که خواص اختیاری می تواند منجر به آن شود undefined
مقادیر موجود در کد شما، که در صورت عدم مدیریت صحیح می تواند باعث خطاهای زمان اجرا شود.
برای جلوگیری از این امر، همیشه قبل از تلاش برای دسترسی به یک ویژگی اختیاری، بررسی کنید که آیا یک ویژگی اختیاری وجود دارد.
let user: OptionalUser = { id: 1 };
if (user.name) {
console.log(`Hello, ${user.name}`);
} else {
console.log('Hello, User');
}
ابتدا بررسی می کنیم که آیا user.name
قبل از استفاده وجود دارد. اگر وجود نداشته باشد، به یک مقدار پیش فرض برمی گردیم. به این ترتیب، ما می توانیم اجتناب کنیم undefined
خطا در کد ما
سایر اصلاح کننده های دارایی
به غیر از ویژگی های اختیاری، اصلاح کننده های ویژگی دیگری نیز وجود دارد. اینها شامل readonly
و required
خواص بیایید نگاهی به هر یک از این موارد بیندازیم.
ویژگی های فقط خواندنی
آ readonly
ویژگی خاصیتی است که پس از مقداردهی اولیه قابل تغییر نیست، شبیه به const
. این می تواند زمانی مفید باشد که می خواهید اطمینان حاصل کنید که یک ویژگی مقدار معینی را در طول عمر یک شیء حفظ می کند.
در اینجا یک مثال است:
class Car {
readonly make: string;
readonly model: string;
constructor(make: string, model: string) {
this.make = make;
this.model = model;
}
}
const myCar = new Car('Tesla', 'Model S');
myCar.make = 'Ford'; // Error: Cannot assign to 'make' because it is a read-only property.
در این مثال، make
و model
هستند readonly
خواص بعد از یک Car
شی ایجاد شده است، شما نمی توانید آن را تغییر دهید make
یا model
. تلاش برای انجام این کار منجر به یک خطای TypeScript می شود.
خواص مورد نیاز
بر خلاف ویژگی های اختیاری، که می توان آنها را ترک کرد undefined
، خواص مورد نیاز باید تعریف شود. اگر بخواهید یک شی را بدون تعریف تمام خصوصیات مورد نیاز آن ایجاد کنید، TypeScript یک خطا ایجاد می کند.
این نوع از ویژگی ها نیازی به هیچ تغییری ندارند، که اساساً همه ویژگی ها را به طور پیش فرض مورد نیاز می کند.
interface Person {
name: string;
age: number;
}
const john: Person = {
name: 'John',
// Error: Property 'age' is missing in type '{ name: string; }' but required in type 'Person'.
};
اینجا، name
و age
خواص مورد نیاز در Person
رابط. تلاش برای ایجاد یک Person
شی بدون تعریف age
منجر به یک خطای TypeScript می شود.
نتیجه
در این بایت، روش اختیاری کردن تمام خصوصیات در TypeScript را بررسی کردیم. ما همچنین به سایر اصلاح کننده های دارایی مانند readonly
و خواص مورد نیاز
منتشر شده در 1402-12-27 14:02:04