تایپاسکریپت (TypeScript) یک توسعه از زبان جاوااسکریپت است که از محیط اجرای جاوااسکریپت استفاده کرده و به آن یک سیستم تایپ چکینگ در زمان کامپایل اضافه میکند. این ترکیب به توسعهدهندگان این امکان را میدهد که از اکوسیستم کامل جاوااسکریپت بهره ببرند و در عین حال انواع دادهها، enumها، کلاسها و اینترفیسها را به صورت اختیاری استفاده کنند. این ویژگیها باعث میشوند کدبیس شما هم انعطافپذیر بماند و هم از نظر کیفیت و اطمینانپذیری بهبود یابد، به طوری که خطاهایی که در زمان اجرا ممکن است بروز کنند در زمان کامپایل تشخیص داده شوند.
اطلاعات اضافی تایپ نیز مستندسازی بهتری فراهم میکند و باعث بهبود IntelliSense (تکمیل خودکار کد، نمایش پارامترها و امکانات کمک به نویسندگی کد) در ویرایشگرها میگردد. همکاران تیم میتوانند به سرعت تشخیص دهند که متغیرها یا پارامترها از چه نوعی هستند بدون نیاز به بررسی پیادهسازی کد.
نحوه اعلان نوع متغیرها در تایپاسکریپت
در جاوااسکریپت که زبان کاملاً پویا است، نمیتوان نوع داده متغیرها را مشخص کرد. متغیر ایجاد میکنید و مقداری به آن اختصاص میدهید، بدون اینکه نوع آن را تعیین کنید:
let language = { name: 'JavaScript' };
در این مثال، زبان (language) به صورت یک آبجکت تعریف شده که دارای یک ویژگی name از نوع رشته است، اما نوع مقدار آن صراحتا مشخص نشده و ممکن است بعداً موجب ابهام شود.
تایپاسکریپت به شما امکان میدهد تا نوع متغیرها را صراحتا اعلام کنید. برای این کار از علامت دو نقطه (:) پس از نام متغیر استفاده میشود و سپس نوع متغیر نوشته میشود:
let language: string;
بنابراین اگر مقداری از نوع دیگر به آن اختصاص دهید، کامپایلر تایپاسکریپت خطا خواهد داد.
انواع پایه در تایپاسکریپت
در ادامه، انواع پایه مهم در تایپاسکریپت معرفی میشوند. معمولا تایپاسکریپت قادر است به صورت خودکار نوع متغیرها را استنتاج کند اما در این آموزش به منظور یادگیری به صورت صریح نوعها نوشته شدهاند.
string
نوع رشته (string) برای دادههای متنی استفاده میشود، مانند رشتههای متنی ساده یا template stringها.
let language: string = 'TypeScript';
let message: string = `Welcome to ${language}`;
boolean
نوع بولین (boolean) برای مقادیر درست یا نادرست استفاده میشود.
let hasErrors: boolean = false;
let isValid: boolean = true;
توجه داشته باشید مقادیر truthy یا falsy به صورت اتوماتیک به این نوعها تبدیل نمیشوند و خطا میدهند.
number
نوع عدد (number) برای اعداد صحیح و اعشاری کاربرد دارد:
let count: number = 10;
let price: number = 12.5;
bigint
نوع bigint قادر است اعداد بسیار بزرگتر از 2^53 را ذخیره کند که در تایپاسکریپت با هدف ES2020 کاربرد دارد.
let bigNumber: bigint = 9007199254740991n;
symbol
نوع symbol برای ایجاد مقادیر یکتا و ناشناس به کار میرود:
let uniqueId: symbol = Symbol('id');
آرایهها (Arrays)
آرایهها در تایپاسکریپت بر اساس نوع عناصری که دارند تعریف میشوند. دو روش متداول وجود دارد:
let fruits: string[] = ['apple', 'orange'];
let fruits: Array<string> = ['apple', 'orange'];
انتخاب یکی از این دو روش و استفاده مداوم از آن به حفظ یکنواختی کد کمک میکند.
در صورتی که نوع آرایه مشخص نشود، تایپاسکریپت نوع any[] را فرض میکند که این باعث کاهش ایمنی کد میشود.
تاپل (Tuples)
تاپلها آرایههایی با تعداد و نوع عناصر مشخص هستند. یک کاربرد عمومی تاپلها ذخیره مختصات دو بعدی است:
let point: [number, number] = [10, 20];
تعداد عناصر تاپل باید مطابق تعریف باشد و هر گونه عدم تطابق باعث خطا میشود.
any و unknown
نوع any برای مواقعی استفاده میشود که نمیخواهید تایپاسکریپت بر روی مقدار متغیر چک کند (مثلاً هنگام مهاجرت از کد جاوااسکریپت به تایپاسکریپت). ولی استفاده زیاد از any توصیه نمیشود چون نوعنگاری را از بین میبرد.
نوع unknown نسخه ایمنتر any است. اگر نوع مقداری را دقیق نمیدانید ولی میخواهید بررسی نوع قبل از استفاده را اجباری کنید، از unknown استفاده کنید:
let code: unknown;
code = 35;
code = ['a', 'b'];
code = { id: 1 };
اگر بخواهید با مقدار از نوع unknown عملی انجام دهید باید ابتدا نوع آن را بررسی کنید، مثلاً با typeof:
if (typeof code === 'number') {
console.log(code + 1);
}
void
نوع void برای متغیرهایی استفاده میشود که مقداری ندارند، مثل خروجی توابعی که چیزی return نمیکنند.
null و undefined
این دو مقدار هرکدام نوع خاص خود را دارند و در تعریف نوعهای سفارشی کاربرد دارند.
never
نوع never نمایانگر مقداری است که هیچگاه وجود نخواهد داشت. برای مثال در قسمتهایی از کد که به خاطر نوع مشخص متغیر هیچگاه قابل رسیدن نیستند، این نوع به کار میرود.
object
نوع object هر چیزی جز انواع اولیه (primitive) است و برای توصیف اشیاء به کار میرود. اما معمولاً استفاده از نوع Record بهتر است که در آموزشهای بعدی بررسی میشود.
سخن پایانی
در این آموزش با انواع پایه موجود در تایپاسکریپت آشنا شدید. این انواع پایه بلوکهای اصلی برای ساخت انواع پیچیدهتر و تایپهای سفارشی هستند و استفاده صحیح از آنها باعث ایمنی و قابلیت نگهداری بهتر کد میشود.
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران