فهرست سرفصل‌های TypeScript
خانه (Home) معرفی (Introduction) شروع سریع (Get Started) انواع ساده (Simple Types) تعریف صریح و استنتاج نوع (Explicit & Inference) انواع ویژه (Special Types) آرایه ها (Arrays) تاپل ها (Tuples) انواع شیء (Object Types) شمارشی ها (Enums) نام مستعار و اینترفیس ها (Aliases & Interfaces) انواع اتحادی (Union Types) توابع (Functions) تبدیل نوع (Casting) کلاس ها (Classes) جنریک های پایه (Basic Generics) انواع کاربردی (Utility Types) کلیدواژه keyof (Keyof) Null (Null) Definitely Typed (Definitely Typed) به روزرسانی های نسخه 5 (5 Updates) پیکربندی (Configuration) با Node.js (with Node.js) با React (with React) ابزارها (Tooling) انواع پیشرفته (Advanced Types) نگهبان های نوع (Type Guards) انواع شرطی (Conditional Types) انواع نگاشتی (Mapped Types) استنتاج نوع (Type Inference) انواع لیترال (Literal Types) فضای نام (Namespaces) امضاهای ایندکس (Index Signatures) ادغام اعلان ها (Declaration Merging) برنامه نویسی ناهمگام (Async Programming) دکوراتورها (Decorators) در پروژه های JS (in JS Projects) مهاجرت (Migration) مدیریت خطا (Error Handling) بهترین شیوه ها (Best Practices) ادیتور (Editor) تمرین ها (Exercises) آزمون (Quiz) سرفصل دوره (Syllabus) برنامه مطالعه (Study Plan) گواهینامه (Certificate)
نتیجه‌ای برای جستجو یافت نشد.
TypeScript

TypeScript — انواع شیء (Object Types)

آخرین بروزرسانی: 1404/08/14

انواع شیء (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> هم استفاده کنی. برای تمرین های مرتبط، صفحه تاپل ها و انام ها را هم ببین.

گام های عملی

  1. یک شیء ساده بساز و نوع بده.
  2. یک ویژگی را اختیاری کن.
  3. یک امضای اندیسی تعریف کن.
  4. با استنتاج نوع یک مقدار را تغییر بده.

جمع بندی سریع

  • نوع شیء ساختار و ایمنی می دهد.
  • استنتاج نوع کار را ساده می کند.
  • اختیاری سازی انعطاف می دهد.
  • امضای اندیسی برای کلیدهای پویاست.
  • انواع شیء تایپ اسکریپت را تمرین کن.