برنامه نویسی

قسمت 3: مفاهیم پیشرفته TypeScript

بخش 3: مفاهیم پیشرفته TypeScript

در این بخش، مفاهیم پیشرفته‌ای را در TypeScript بررسی می‌کنیم که به ما امکان می‌دهد کد واضح‌تر و قوی‌تری بنویسیم. ما انواع اتحاد و تقاطع، استنتاج نوع، ژنریک و محافظ های نوع را پوشش خواهیم داد.

انواع اتحاد و تقاطع

انواع اتحادیه به ما اجازه می دهد تا مشخص کنیم که یک مقدار می تواند چندین نوع باشد. ما استفاده می کنیم | عملگر برای نشان دادن یک نوع اتحادیه.

function printId(id: number | string): void {
  console.log(`ID: ${id}`);
}

printId(123); // Valid
printId("abc"); // Valid
printId(true); // Error: Argument of type 'boolean' is not assignable to parameter of type 'number | string'
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

انواع تقاطع به ما امکان می دهد چندین نوع را در یک نوع واحد ترکیب کنیم. ما استفاده می کنیم & عملگر برای نشان دادن نوع تقاطع.

interface Printable {
  print: () => void;
}

interface Loggable {
  log: () => void;
}

function createLogger(): Printable & Loggable {
  return {
    print: () => console.log("Printing..."),
    log: () => console.log("Logging..."),
  };
}

const logger = createLogger();
logger.print(); // Valid
logger.log(); // Valid
logger.sayHello(); // Error: Property 'sayHello' does not exist on type 'Printable & Loggable'
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نوع استنتاج

سیستم استنتاج نوع TypeScript به کامپایلر اجازه می دهد تا انواع متغیرها و عبارات را بر اساس زمینه و کاربرد آنها استنتاج کند. این امر در بسیاری از موارد نیاز به حاشیه نویسی با نوع صریح را کاهش می دهد.

let message = "Hello, TypeScript!"; // TypeScript infers the type as string
let count = 5; // TypeScript infers the type as number

function add(a: number, b: number) {
  return a + b; // TypeScript infers the return type as number
}

const person = {
  name: "John Doe",
  age: 30,
}; // TypeScript infers the type as { name: string, age: number }
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

استنتاج نوع خوانایی و قابلیت نگهداری کد را افزایش می دهد و در عین حال ایمنی نوع را نیز فراهم می کند.

ژنریک ها

Generics در TypeScript به ما اجازه می دهد تا اجزای قابل استفاده مجدد ایجاد کنیم که می توانند با انواع مختلفی کار کنند. آنها ما را قادر می سازند تا با حفظ انعطاف پذیری، کدهای ایمن بنویسیم.

function toArray<T>(arg: T): T[] {
  return [arg];
}

const numbers = toArray(1); // numbers inferred as number[]
const names = toArray("John", "Jane"); // names inferred as string[]
const values = toArray(1, "two"); // Error: Argument of type 'string' is not assignable to parameter of type 'number'
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Generics راهی برای انتزاع بر انواع و ایجاد کد انعطاف پذیرتر و قابل استفاده مجدد فراهم می کند.

تایپ گارد

محافظ های نوع به ما اجازه می دهند تا بر اساس بررسی زمان اجرا، نوع متغیر را در یک بلوک شرطی محدود کنیم. این به ما امکان می‌دهد کد دقیق‌تر و ایمن‌تری بنویسیم.

function logLength(value: string | string[]): void {
  if (typeof value === "string") {
    console.log(value.length); // Valid: value is narrowed down to string
  } else {
    console.log(value.length); // Valid: value is narrowed down to string[]
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

محافظ های نوع به ما کمک می کنند تا کدی بنویسیم که انواع مختلف را به درستی مدیریت کند و از خطاهای زمان اجرا جلوگیری کند.


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

به قسمت 4 ادامه دهید: کار با ماژول ها و واردات

یا به قسمت 2 برگردید: مفاهیم پیشرفته TypeScript

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

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

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

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