پرش به مطلب اصلی

TypeScript

مقدمه

تصور کنید در یک پروژه‌ی بزرگ جاوااسکریپت کار می‌کنید. همان‌طور که کد شما بزرگ‌تر و پیچیده‌تر می‌شود، مشکلات مختلفی پدیدار می‌شوند. به دلیل نبود Static Typing بسیاری از خطاها تنها زمانی مشخص می‌شوند که کد در حال اجرا است. این می‌تواند باعث بروز مشکلات جدی و غیرمنتظره‌ای شود. فهمیدن کدها و نگهداری آن‌ها دشوارتر می‌شود، به‌ویژه اگر تایپ‌های متغیرها و توابع مشخص نباشند. خطاهایی که در مراحل اولیه توسعه شناسایی نمی‌شوند، ممکن است به‌صورت ناگهانی در مراحل پایانی پروژه بروز کنند و زمان و هزینه بیشتری برای رفع آن‌ها نیاز باشد.

TypeScript یک Superset است که بر روی جاوااسکریپت بنا شده و انواع تایپ‌ها را برای مشخص کردن نوع داده در اخیار شما قرار می‌دهد. این قابلیت‌ها به برنامه‌نویسان کمک می‌کند تا کدهای خود را خواناتر و قابل‌اعتمادتر بنویسند. با مشخص کردن تایپ هر داده، کامپایلر قدرتمند TypeScript به کمک شما می‌آید و از بسیاری از خطاهایی که ممکن است به دلیل تایپ نامناسب داده در اجرا به آن بربخورید جلوگیری می‌کند و آن‌ها را در همان زمان کامپایل شناسایی می‌کند.

  • انواع تایپ‌ها در TypeScript کدام‌اند؟
  • interface در TypeScript چه فایده‌ای دارد؟
  • Type Aliases در TypeScript چه مزیتی دارد؟
  • Generics در TypeScript چیست؟
  • Decorator در TypeScript چه کاری برای ما انجام می‌دهد؟

یادگیری

انواع تایپ‌های primitive

در TypeScript، انواع ابتدایی (Primitive Types) به انواع داده‌ای ساده و پایه‌ای اشاره دارند که معمولاً به صورت مستقیم و بدون استفاده از ساختارهای پیچیده تعریف می‌شوند. انواع ابتدایی در TypeScript شامل موارد زیر هستند:

typeتعریف
numberبرای اعداد استفاده می‌شود، مانند اعداد صحیح و اعشاری.
stringبرای رشته‌ها یا متن‌ها استفاده می‌شود.
booleanبرای مقادیر صحیح و غلط (true و false) استفاده می‌شود.
nullبرای متغیرهایی که مقدار آن‌ها خالی یا نال باشد.
undefinedبرای متغیرهایی که مقدار آن‌ها تعریف نشده باشد.
symbolنوعی داده‌ی ابتدایی جدید که برای ایجاد شناسه‌های منحصر به فرد استفاده می‌شود.
bigintبرای اعداد بزرگ که نمی‌توانند در نوع داده‌ی number جای بگیرند.

این انواع داده‌های ابتدایی به شما امکان می‌دهند تا متغیرهای ساده و پایه‌ای را در TypeScript تعریف کنید و از آن‌ها در برنامه‌های خود استفاده کنید.

برای اطلاعات بیشتر و یادگیری عمیق‌تر درباره انواع ابتدایی در TypeScript ، می‌توانید از منابع زیر استفاده کنید:


انواع داده‌های پیچیده‌تر در TypeScript

در TypeScript ، علاوه بر انواع داده‌های ابتدایی، انواع داده‌های پیچیده‌تری نیز وجود دارند که به شما امکان می‌دهند تا ساختارهای داده‌ای پیشرفته‌تری را تعریف کنید. این انواع عبارتند از:

typeتعریف
Arrayبرای ذخیره‌سازی مجموعه‌ای از مقادیر استفاده می‌شود.
Tupleبرای ذخیره‌سازی مجموعه‌ای ثابت از مقادیر با به ترتیب مشخص استفاده می‌شود.
Enumبرای تعریف مجموعه‌ای از ثابت‌ها استفاده می‌شود.
Union Typesبرای متغیرهایی که می‌توانند چند نوع مختلف داشته باشند استفاده می‌شود.
Intersection Typeبرای ترکیب چند نوع استفاده می‌شود.
Objectبرای تعریف ساختارهای داده‌ای که شامل مجموعه‌ای از ویژگی‌ها هستند استفاده می‌شود.
Function Typesبرای تعریف نوع تابع استفاده می‌شود.

برای اطلاعات بیشتر و یادگیری عمیق‌تر درباره انواع داده‌های پیچیده در TypeScript ، می‌توانید از منابع زیر استفاده کنید:

Interfaces

در TypeScript از interface برای تعریف قراردادها و قالب‌های داده‌ای استفاده می‌شوند. اینترفیس‌ها مشخص می‌کنند که یک شیء یا کلاس باید چه ویژگی‌ها و متدهایی را داشته باشد، بدون اینکه جزئیات پیاده‌سازی را تعیین کنند. اینترفیس‌ها به ساختاردهی کد و اطمینان از سازگاری بین اجزای مختلف کمک می‌کنند.

مثال ساده از یک interface :

interface Person {
name: string;
age: number;
greet(): void;
}

const personName: string = 'John';

let user: Person = {
name: personName,
age: 30,
greet() {
console.log('Hello!');
},
};

برای اطلاعات بیشتر و یادگیری عمیق‌تر درباره interface در TypeScript ، می‌توانید از منابع زیر استفاده کنید:

Type Aliases

در Type Aliases ،
TypeScript به شما اجازه می‌دهند تا یک نام جدید برای یک نوع داده‌ای موجود تعریف کنید. این کار باعث می‌شود کد خواناتر و مدیریت انواع داده‌ها آسان‌تر شود.

مثال ساده از یک Type Alias :

type ID = string | number;
let userId: ID = 123;
userId = "abc123";

برای اطلاعات بیشتر و یادگیری عمیق‌تر درباره Type Alias در TypeScript ، می‌توانید از منابع زیر استفاده کنید:


Generics

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

مثال ساده از یک تابع Generic :

function identity<T>(arg: T): T {
return arg;
}

let output1 = identity<string>('Hello');
let output2 = identity<number>(123);

در این مثال، تابع identity با هر نوع داده‌ای کار می‌کند و نوع ورودی و خروجی آن با T مشخص می‌شود.

برای اطلاعات بیشتر و یادگیری عمیق‌تر درباره Generic در TypeScript ، می‌توانید از منابع زیر استفاده کنید:


Decorators

دکوریتورها (Decorators) در TypeScript یک ویژگی قدرتمند هستند که به شما امکان می‌دهند تا رفتار کلاس‌ها و اعضای آن‌ها را تغییر دهید یا به آن‌ها قابلیت‌های جدیدی اضافه کنید. دکوریتورها در حقیقت توابعی هستند که بر روی کلاس‌ها، متدها، ویژگی‌ها، یا پارامترهای متدها اعمال می‌شوند. دکوریتورها با استفاده از @ پیش از تعریف آن‌ها، مشخص می‌شوند.

برای اطلاعات بیشتر و یادگیری عمیق‌تر درباره دکوریتورها در TypeScript ، می‌توانید از منابع زیر استفاده کنید:

پروژه

هدف

ایجاد آیتم های بخش Article با استفاده از TypeScript

مراحل

  1. یک Interface بسازید که دارای سه Property به نام های title,description,imageUrl باشد که Type هر سه این Property ها string باشد
  2. با استفاده از فایل Json ای که در اختیارتون قرار داده شده است آیتم های قسمت Article را بسازید

نکات

  • کارایی پروژه را به منتور خود نمایش دهید