سلام دوستان. توی این پست، قسمت دوم از مجموعه پست‌های «آشنایی با Utility Type های پرکاربرد تایپ‌اسکریپت» رو بررسی می‌کنیم. قسمت اول رو می‌تونین از اینجا ببینین:

 

۱۱. تایپ ThisParameterType<Type>

همونطور که می‌دونیم توی تایپ‌اسکریپت در حالت عادی نوع this توی یک تابع any هست و اگه بخوایم نوع this رو صراحتاً مشخص کنیم می‌تونیم از روش زیر استفاده کنیم:

function func(<<this: Number>>) {
  this.toString();
}

حالا اگه بخوایم یک تایپ از نوع this یک تابع داشته باشیم‌، می‌تونیم از ThisParameterType استفاده کنیم:

function func(this: Number) {
  this.toString();
}

type MyType = ThisParameterType<typeof func>; // Number

 

۱۲. تایپ Awaited<Type>

اگه یک تایپ از نوع خروجی یک Promise لازم داریم، می‌تونیم از Awaited استفاده کنیم:

type A = Awaited<Promise<string>‌>;           // string 
type B = Awaited<Promise<Promise<number>‌>‌>;  // number
type C = Awaited<boolean | Promise<number>‌>; // number | boolean

همونطور که می‌بینیم می‌تونیم نوع پرامیس‌های تو در تو رو هم بدست بیاریم.

 

۱۳. تایپ ReadonlyArray<Type>

اگه می‌خوایم یک آرایه Readonly داشته باشیم، می‌تونیم از این تایپ استفاده کنیم:

const numbers: ReadonlyArray<Number> = [1, 2, 3];

// Error: Property 'push' does not exist on type 'readonly Number[]'
numbers.push(4);

همونطور که می‌بینیم با این کار امکان تغییر اعضای آرایه رو نداریم.

 

۱۴. تایپ ConstructorParameters<Type>

این تایپ که مشابه Parameters هست، برای زمانی استفاده میشه که می‌خوایم یک تایپ از نوع پارامترهای Constructor یک کلاس داشته باشیم:

class MyClass {
  constructor(id: string) {

  }
}

const x: ConstructorParameters<typeof MyClass> = ["hi"];

این تایپ یک Tuple برمی‌گردونه که شامل نوع‌های پارامتر تابع مد نظرمون هست.

 

خب دوستان این قسمت هم به پایان رسید و تونستیم ۱۴ Utility Type پرکاربرد تایپ‌اسکریپت رو بررسی کنیم. امیدوارم استفاده کرده باشین. روزتون خوش ✌️

https://www.typescriptlang.org/docs/handbook/utility-types.html

https://obaranovskyi.medium.com/typescript-understand-built-in-utility-types-5aa9ea44fe45