انواع کاربردی (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 در زمان کامپایل است. جاوااسکریپت همچنان اجرا می شود.
گام های عملی
- ابتدا نوعِ فعلیِ داده ها را بنویس.
- سپس Utility مناسب را انتخاب کن.
- در پایان، خروجی را با یک مثال تست کن.
برای شروعِ جنریک ها، به جنریک های پایه برو. همچنین فصل keyof تکمیل کننده است. مرور کاملِ انواع کاربردی تایپ اسکریپت را در همین صفحه نگه دار.
جمع بندی سریع
- Partial اختیاری می کند؛ Required اجباری می کند.
- Pick نگه می دارد؛ Omit حذف می کند.
- Record نقشه کلید به مقدار می سازد.
- Exclude از یونین حذف می کند.
- ReturnType و Parameters از توابع استخراج می کنند.