فهرست سرفصل‌های 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 — انواع کاربردی (Utility Types)

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

انواع کاربردی (Utility Types)

در تایپ اسکریپت، «انواع کاربردی (Utility Types)» ابزارهای آماده اند. آن ها روی تایپ ها عمل می کنند و کارِ شما را ساده می کنند. تمرکز ما: «انواع کاربردی تایپ اسکریپت» با مثال های کوتاه.

Partial

Partial یعنی همه ویژگی ها اختیاری می شوند. مانند برگه ای که هنوز کامل نشده است.

interface Point {
  x: number;
  y: number;
}

let pointPart: Partial<Point> = {};
pointPart.x = 10;

مشاهده در ادیتور

Required

Required یعنی همه ویژگی ها اجباری می شوند. هیچ فیلدی جا نمی ماند.

interface Car {
  make: string;
  model: string;
  mileage?: number;
}

let myCar: Required<Car> = {
  make: "Ford",
  model: "Focus",
  mileage: 12000
};

مشاهده در ادیتور

Record

Record میانبر ساخت آبجکتِ «کلید از یک نوع» و «مقدار از نوعی دیگر» است.

const nameAgeMap: Record<string, number> = {
  "Alice": 21,
  "Bob": 25
};

مشاهده در ادیتور

نکته: Record<string, number> مانند { [key: string]: number } است.

Omit

Omit یعنی بعضی کلیدها را از نوع حذف کن. مثل پاک کردن ستون های اضافی.

interface Person {
  name: string;
  age: number;
  location?: string;
}

const bob: Omit<Person, "age" | "location"> = {
  name: "Bob"
};

مشاهده در ادیتور

Pick

Pick برعکس Omit است. فقط کلیدهای گفته شده را نگه می دارد.

interface Person {
  name: string;
  age: number;
  location?: string;
}

const bobNameOnly: Pick<Person, "name"> = {
  name: "Bob"
};

مشاهده در ادیتور

Exclude

Exclude از یک یونین، نوع های مشخص را حذف می کند. یونین یعنی «یا این یا آن».

type Primitive = string | number | boolean;

const value: Exclude<Primitive, string> = true;

مشاهده در ادیتور

ReturnType

ReturnType نوعِ خروجیِ یک تابع را استخراج می کند. مفید برای هم خوانی.

type PointGenerator = () => { x: number; y: number; };

const point: ReturnType<PointGenerator> = {
  x: 10,
  y: 20
};

مشاهده در ادیتور

Parameters

Parameters آرایه نوع پارامترهای یک تابع را می دهد. مانند الگوگیری.

type PointPrinter = (p: { x: number; y: number; }) => void;

const firstParam: Parameters<PointPrinter>[0] = {
  x: 10,
  y: 20
};

مشاهده در ادیتور

Readonly

Readonly همه ویژگی ها را فقط خواندنی می کند. بعد از مقداردهی، دیگر تغییر نده.

interface Person {
  name: string;
  age: number;
}

const person: Readonly<Person> = {
  name: "Dylan",
  age: 35
};

// person.name = "Israel"; // خطا در زمان کامپایل

مشاهده در ادیتور

هشدار: جلوگیریِ Readonly در زمان کامپایل است. جاوااسکریپت همچنان اجرا می شود.

گام های عملی

  1. ابتدا نوعِ فعلیِ داده ها را بنویس.
  2. سپس Utility مناسب را انتخاب کن.
  3. در پایان، خروجی را با یک مثال تست کن.

برای شروعِ جنریک ها، به جنریک های پایه برو. همچنین فصل keyof تکمیل کننده است. مرور کاملِ انواع کاربردی تایپ اسکریپت را در همین صفحه نگه دار.

جمع بندی سریع

  • Partial اختیاری می کند؛ Required اجباری می کند.
  • Pick نگه می دارد؛ Omit حذف می کند.
  • Record نقشه کلید به مقدار می سازد.
  • Exclude از یونین حذف می کند.
  • ReturnType و Parameters از توابع استخراج می کنند.