انواع ابزار Typescript که باید بدانید

سلام به همه، امروز، در این مقاله، چند نوع ابزار مفید و ضروری در تایپ اسکریپت را بررسی می کنیم که می تواند زندگی شما را آسان تر کند.
انواع ابزار در Typescript برخی از انواع عمومی از پیش تعریف شده هستند که می توانند برای دستکاری یا ایجاد انواع جدید دیگر استفاده شوند. این انواع به صورت جهانی در تمام پروژههای Typescript در دسترس هستند، بنابراین نیازی به افزودن وابستگی برای انجام این کار ندارید.
فهرست مطالب
جزئي
اولین نوع ابزاری که به آن نگاه خواهیم کرد این است Partial,
که، همانطور که به نظر می رسد، همه چیز را اختیاری یا جزئی می کند.
در اینجا یک نمونه از جزئي نوع ابزار:
interface Person {
name: string;
age: number;
email: string;
}
// Define a new type called 'PartialPerson' that is a partial version of 'Person'
type PartialPerson = Partial<Person>;
// Same as:
// interface Person {
// name?: string | undefined;
// age?: number | undefined;
// email?: string | undefined;
// }
ضروری
برعکس Partial
است Required
نوع ابزار، که همه چیز را مورد نیاز می کند.
interface Person {
name?: string | undefined;
age?: number | undefined;
email?: string | undefined;
}
// Define a new type called 'RequiredPerson' that is a required version of 'Person'
type RequiredPerson = Required<Person>;
// Same as:
// interface Person {
// name: string;
// age: number;
// email: string;
// }
حذف کنید
می توانید استفاده کنید Omit
نوع ابزار برای ایجاد یک نوع جدید از یک نوع موجود، با این حال، با حذف برخی از ویژگی ها.
interface User {
id: number;
name: string;
email: string;
age: number;
}
type UserWithoutEmail = Omit<User, 'email'>;
// same as:
// interface Person {
// id: string;
// name: string;
// age: number;
// }
همچنین می توانیم چندین ویژگی را با عبور از یک حذف کنیم union
interface User {
id: number;
name: string;
email: string;
age: number;
}
type UserWithoutEmailAndName = Omit<User, 'email' | 'name'>;
// same as:
// interface Person {
// id: string;
// age: number;
// }
انتخاب
برعکس Omit
هست Pick
نوع کاربردی که به شما امکان می دهد یک نوع جدید ایجاد کنید که فقط شامل یک زیر مجموعه از ویژگی های یک نوع موجود است.
interface User {
id: number;
name: string;
email: string;
age: number;
}
type UserWithEmailAndName = Pick<User, 'email' | 'name'>;
// same as:
// interface Person {
// name: string;
// email: string;
// }
چند نوع ابزار با هم
ما حتی می توانیم از چندین نوع ابزار با هم استفاده کنیم. مثلا:
interface User {
id: number;
name: string;
email: string;
age: number;
}
type PartialPick = Partial<Pick<User, 'email' | 'name'>>;
// same as:
// interface Person {
// name?: string | undefined;
// email?: string | undefined;
// }
مثال دیگر:
interface User {
id: number;
name: string;
email: string;
age: number;
}
type OmitPartialPick = Omit<Partial<Pick<User, 'email' | 'name'>>, 'email'>;
// same as:
// interface Person {
// name?: string | undefined;
// }
فقط خواندنی
Readonly
انواع ابزار به شما این امکان را می دهد که یک نوع جدید از مجموعه نوع موجود به عنوان ایجاد کنید readonly,
به این معنی که ما نمی توانیم هیچ ویژگی را پس از مقداردهی اولیه تغییر دهیم.
interface Person {
id: number;
name: string;
age: number;
}
type ReadonlyPerson = Readonly<Person>;
// same as:
// interface Person {
// readonly id: number;
// readonly name: string;
// readonly age: number;
// }
const person: ReadonlyPerson = {
id: 1,
name: 'John',
age: 25
};
person.name = 'Mike'; // Error: Cannot assign to 'name' because it is a read-only property.
قابل تغییر است
شما همچنین می توانید یک ایجاد کنید Mutable
نوع کمکی که به شما امکان می دهد تمام انواع فقط خواندنی را به نوع قابل تغییر تبدیل کنید.
interface Person {
readonly id: number;
readonly name: string;
readonly age: number;
}
// The syntax for Mutable is as follows:
type Mutable<T> = {
-readonly [P in keyof T]: T[P];
};
type MutablePerson = Mutable<Person>;
// same as:
// interface Person {
// id: number;
// name: string;
// age: number;
// }
const person: MutablePerson = {
id: 1,
name: 'John',
age: 25
};
person.name = 'Mike'; // Okay
person.id = 2; // Okay
مستثنی کردن
Exclude
نوع ابزار به شما اجازه می دهد تا با حذف اعضای یک نوع جدید ایجاد کنید union
type NumberOrString = number | string;
type OnlyNumber = Exclude<NumberOrString, string>;
// same as:
// type OnlyNumber = number;
const num: OnlyNumber = 5;
const str: OnlyNumber = 'hello'; // Error: Type '"hello"' is not assignable to type 'number'.
شما حتی می توانید exlude
اعضای متعدد یک اتحادیه:
type NumberStringOrBoolean = number | string | boolean;
type OnlyBoolean = Exclude<NumberStringOrBoolean, string | number>;
// same as:
// type OnlyBoolean = boolean;
استخراج کردن
برعکس Exclude
است Extract
نوع ابزاری که به شما امکان می دهد انتخاب کنید آ یا چندگانه اعضای یک اتحادیه:
type NumberOrString = number | string | boolean;
type OnlyNumber = Extract<NumberOrString, number>;
// same as:
// type OnlyNumber = number;
نوع بازگشت
ReturnType
نوع ابزار به شما امکان می دهد نوع برگشتی یک نوع تابع را استخراج کنید. یک نوع تابع را به عنوان آرگومان می گیرد و نوع مقداری را که تابع برمی گرداند برمی گرداند.
function add(a: number, b: number): number {
return a + b;
}
type AddReturnType = ReturnType<typeof add>;
// type AddReturnType = number;
// ---
function addStr(a: string, b: string): string{
return a + b;
}
type AddReturnType2 = ReturnType<typeof addStr>;
// type AddReturnType2 = string;
مولفه های
را Parameters
نوع ابزار به شما امکان می دهد نوع پارامترها را از یک تابع استخراج کنید.
function add(a: number, b: string, c:boolean): string {
return a + b;
}
type AddReturnType = Parameters<typeof add>;
// type AddReturnType = [a: number, b: string, c:boolean];
NonNullable
NonNullable
نوع utility به شما امکان می دهد با حذف کردن یک نوع جدید ایجاد کنید null
و undefined
از یک نوع معین
type NullableString = string | null | undefined;
type NonNullableString = NonNullable<NullableString>;
// type NonNullableString = string;
const str1: NullableString = null;
const str2: NonNullableString = 'hello';
const str3: NonNullableString = null; // Error: Type 'null' is not assignable to type 'string'.
در انتظار
Awaited
نوع ابزار به شما امکان می دهد تا نوع حل شده a را استخراج کنید promise
یا نوع دیگری که استفاده می کند await
.
type promiseNumber = Promise<number>
type justNumber = Awaited<Promise<number>>
// type justNumber = number
Awaited و ReturnType ترکیب شدند
در اینجا یک مثال از استفاده است ReturnType
و Awaited
با یکدیگر:
async function fetchData(): Promise<string> {
// fetch data from API and return a string
}
type ResolvedResult = Awaited<ReturnType<typeof fetchData>>;
// type ResolvedResult = string
در این مثال، یک تابع async تعریف می کنیم که a را برمی گرداند Promise
از یک رشته (Promise<string>).
سپس استفاده می کنیم ReturnType
برای استخراج نوع برگشتی fetchData و ارسال آن به عنوان آرگومان به Awaited
برای باز کردن نوع حل شده وعده داده شده.
نتیجه
اینها برخی از پرکاربردترین انواع ابزار تایپ اسکریپت هستند که به شدت توسط توسعه دهندگان دیگر در سراسر جهان استفاده می شود. کد شما را پاک می کند و می تواند برای کار با انواع به صورت واضح تر و مختصرتر استفاده شود. امیدوارم این مقاله برای شما مفید بوده باشد، و اگر فکر میکنید من انواع ابزار ضروری را از دست دادهام، لطفاً در نظرات به من اطلاع دهید. با تشکر از خواندن مقاله همه شما را در مقاله بعدی من می بینم 🐼.