انواع شیء (Object Types)
«انواع شیء تایپ اسکریپت» یعنی تعریف نوع برای شیء. شیء (Object) یعنی مجموعه ویژگی ها. هر ویژگی یک نام و مقدار دارد. این کمک می کند خطاها زود دیده شوند. در مدرسه، مثل کارنامه با ستون های مشخص است.
تعریف نوع شیء با سینتکس درجا
سینتکس (Syntax) یعنی شکل درست نوشتن کد. اینجا نوع هر ویژگی را مشخص می کنیم. سپس مقدارها باید مطابق نوع باشند. در غیر این صورت خطا می آید.
// define an object type inline
const car: { type: string, model: string, year: number } = {
type: "Toyota",
model: "Corolla",
year: 2009
};
نکته: برای بازاستفاده، نوع را جدا تعریف کن. درباره این کار در انواع شیء تایپ اسکریپت بیشتر تمرین کن.
استنتاج نوع (Type Inference)
استنتاج نوع یعنی تایپ اسکریپت نوع را از مقدار حدس می زند. بنابراین بدون اعلام صریح، ویژگی ها تایپ می گیرند. این مثل حدس زدن نوع خودکار از نوشته است.
// type inference for object properties
const car = {
type: "Toyota"
};
car.type = "Ford"; // ok: still a string
car.type = 2; // error: number is not assignable to string
ویژگی اختیاری (Optional Property)
ویژگی اختیاری یعنی وجودش لازم نیست. علامت ? کنار نام ویژگی می آید. این مثل ستون اختیاری در فرم ثبت نام است.
بدون ویژگی اختیاری
اینجا نبودن ویژگی لازم، خطا می دهد. چون در نوع الزامی تعریف شده است.
// missing required property causes an error
const car: { type: string, mileage: number } = {
// Error: Property 'mileage' is missing
type: "Toyota"
};
car.mileage = 2000;
با ویژگی اختیاری
الان ویژگی اختیاری است. نبودنش مشکلی ندارد. بعداً می توان مقدار داد.
// optional property using ?
const car: { type: string, mileage?: number } = {
type: "Toyota"
};
car.mileage = 2000;
امضاهای اندیسی (Index Signatures)
امضای اندیسی یعنی تعریف نوع برای کلیدهای ناشناخته. این برای اشیایی با کلیدهای پویا کاربردی است. مثل دفتر حضور که هر نام دانش آموز یک کلید می شود.
// object with dynamic string keys and number values
const nameAgeMap: { [index: string]: number } = {};
nameAgeMap.Jack = 25; // ok
nameAgeMap.Mark = "Fifty"; // error: string is not assignable to number
نکته: می توانی از Record<string, number> هم استفاده کنی. برای تمرین های مرتبط، صفحه تاپل ها و انام ها را هم ببین.
گام های عملی
- یک شیء ساده بساز و نوع بده.
- یک ویژگی را اختیاری کن.
- یک امضای اندیسی تعریف کن.
- با استنتاج نوع یک مقدار را تغییر بده.
جمع بندی سریع
- نوع شیء ساختار و ایمنی می دهد.
- استنتاج نوع کار را ساده می کند.
- اختیاری سازی انعطاف می دهد.
- امضای اندیسی برای کلیدهای پویاست.
- انواع شیء تایپ اسکریپت را تمرین کن.