برنامه نویسی

انواع ابزار 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 برای باز کردن نوع حل شده وعده داده شده.


نتیجه

اینها برخی از پرکاربردترین انواع ابزار تایپ اسکریپت هستند که به شدت توسط توسعه دهندگان دیگر در سراسر جهان استفاده می شود. کد شما را پاک می کند و می تواند برای کار با انواع به صورت واضح تر و مختصرتر استفاده شود. امیدوارم این مقاله برای شما مفید بوده باشد، و اگر فکر می‌کنید من انواع ابزار ضروری را از دست داده‌ام، لطفاً در نظرات به من اطلاع دهید. با تشکر از خواندن مقاله همه شما را در مقاله بعدی من می بینم 🐼.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا