رمزگشایی از تایپ‌های TypeScript

TypeScript بر یک سیستم تایپ (type system) متکی است. تسلط بر آن اولین قدم شما برای نوشتن کدی بهتر است.

تایپ‌های پایه (Basic Types)

TypeScript از تایپ‌هایی مشابه با انواع اولیه (primitives) در JavaScript استفاده می‌کند: • string: برای متن. • number: برای تمام اعداد (اعداد صحیح و اعشاری). • boolean: برای مقادیر true یا false.

استنتاج تایپ (Type Inference)

همیشه نیازی به نوشتن تایپ نیست. TypeScript اغلب بر اساس مقداری که ارائه می‌دهید، تایپ را حدس می‌زند. به این کار استنتاج (inference) می‌گویند.

یک قاعده خوب: • اجازه دهید TypeScript تایپ متغیرهای محلی را استنتاج کند. • برای پارامترهای تابع و تایپ‌های بازگشتی، تایپ‌ها را به‌صورت صریح (explicit) بنویسید.

آرایه‌ها و تاپل‌ها (Arrays and Tuples)

آرایه‌ها چندین مقدار از یک نوع را نگه می‌دارند. • مثال: let tags: string[] = ["ts", "js"];

تاپل‌ها آرایه‌هایی با طول ثابت و تایپ‌های مشخص برای هر موقعیت هستند. • مثال: let user: [string, number] = ["Ramesh", 31];

تایپ‌های یونیون (Union Types)

زمانی از تایپ‌های یونیون استفاده کنید که یک مقدار می‌تواند بیش از یک نوع باشد. • مثال: let id: string | number = "abc123";

تایپ‌های خاص (Special Types)

چهار تایپ که اغلب مبتدیان را گیج می‌کنند:

  1. any این تایپ بررسی تایپ را غیرفعال می‌کند. باعث می‌شود کد شما مانند JavaScript معمولی رفتار کند. از آن به عنوان آخرین راه حل استفاده کنید.

  2. unknown این نسخه امن any است. می‌گوید که مقدار می‌تواند هر چیزی باشد، اما باید قبل از استفاده، تایپ آن را بررسی کنید.

  3. void از این تایپ برای توابعی استفاده کنید که مقداری را باز نمی‌گردانند.

  4. never از این تایپ برای توابعی استفاده کنید که هرگز تمام نمی‌شوند، مانند توابعی که خطا پرتاب می‌کنند (throw errors) یا حلقه‌های بی‌نهایت اجرا می‌کنند.

خلاصه‌ای برای گردش کار شما: • برای بیشتر داده‌ها از انواع اولیه (primitives) استفاده کنید. • از استنتاج (inference) برای تمیز نگه داشتن کد استفاده کنید. • برای ورودی‌های منعطف از تایپ‌های یونیون استفاده کنید. • از any دوری کنید. • زمانی که مطمئن نیستید، به جای any از unknown استفاده کنید.

منبع: https://dev.to/ramesh_s_a8f0867d239e927c/typescript-types-demystified-simple-types-special-types-and-type-inference-5bf0