در این قسمت از سری آموزش TypeScript از وب سایت پرووید، در رابطه با مفهوم Type Annotation صحبت خواهیم کرد. شاید بدانید که زبان JavaScript یک زبان Typed نیست. به عبارت دیگر شما نمی توانید Type و یا نوع داده یک متغیر را به مواردی از قبیل number و string و یا boolean تنظیم کنید. زبان TypeScript در مقایسه با زبان JavaScript یک زبان Typed می باشد به عبارت دیگر شما می توانید، نوع داده ای و یا Data Type و یا به طور کوتاه Type مربوط به متغیرها، پارامترهای Function ها و همچنین Property ها را تعریف کنید.
به منظور تنظیم Type مربوط به یک متغیر و یا پارامتر یک تابع و یا حتی یک Property از تکنیک Type Annotation استفاده می کنیم. به عبارت دیگر با استفاده از : می توانیم نوع داده این موارد را تعریف کنیم. در زبان TypeScript تمامی نوع های داده ای اولیه و یا اصطلاحاً Primitive Type ها وجود دارند. به عبارت دیگر شما می توانید از Type هایی نظیر number و string و boolean استفاده کنید. کدی که در قسمت زیر مشاهده میکنید نحوه استفاده از Data Type های مختلف برای تعریف متغیرهایی با نام های age و name و isUpdated می باشد.
var age: number = 32; // number variable
var name: string = "John";// string variable
var isUpdated: boolean = true;// Boolean variable
در مثالی که در قسمت بالا مشاهده می کنید، هر متغیر با Data Type مشخص شده خود تعریف شده است. به این تکنیک اصطلاحاً Type Annotation می گویند. پس از مشخص کردن Type مربوط به یک متغیر فقط مقادیری که از نوع آن Data Type می باشند امکان ذخیره شدن در آن متغیرها را دارند. به عبارت دیگر اگر سعی کنید غیر از این انجام بدهید، کامپایلر TypeScript خطا ایجاد خواهد کرد.
این موضوع برای کشف و برطرف کردن خطاهایی که در JavaScript نیز وجود دارند بسیار مناسب است. برای مثال اگر در کد بالا سعی کنید که در متغیر age یک مقدار رشته ای قرار بدهید و یا یک مقدار عددی را در متغیر name قرار بدهید، خطا ایجاد خواهد شد.
تکنیک Type Annotation ها برای پیاده سازی مکانیزم Type Checking استفاده می شوند. منظور از مکانیزم Type Checking کنترل و یا چک کردن Data Type مربوط به متغیرها می باشد. البته تکنیک Type Annotation در زبان برنامه نویسی TypeScript اجباری نیست، با این وجود با استفاده از Type Annotation نه تنها به کامپایلر کمک می کنید که مکانیزم Type Checking را به خوبی انجام بدهد بلکه از خطاهایی که در رابطه با Data Type ها اتفاق می افتد جلوگیری میکنیم.
از همه این ها گذشته استفاده از Type Annotation می تواند کمک کند تا کد شما از قابلیت خوانایی و یا اصطلاحاً Readability بیشتری بهره مندشود و نهایتا به قابلیت نگهداری و یا Maintainability شما بسیار کمک میکند. در رابطه با مباحث مربوط به این قابلیت خوانایی کد در بسته ی آموزش ویدئویی کدنویسی تمیز: نوشتن کد برای انسان ها بیشتر صحبت کرده ایم.
علاوه بر تکنیک Type Annotation، می توانیم در زبان TypeScript شبیه به زبان JavaScript عمل کنیم و اجازه بدهیم که کامپایلر زبان TypeScript نوع داده ای و یا Data Type متغیرها را اصطلاحاً استنتاج و یا Infer کند. به این تکنیک اصطلاحاً Type Inference می گویند. مثالی که در قسمت زیر مشاهده می کنید، مربوط به انجام عملیات Type Annotation بر روی پارامترهای یک Function به نام display می باشد.
function display(id:number, name:string)
{
console.log("Id = " + id + ", Name = " + name);
}
همچنین می توانیم یک Object را به صورت In-line تعریف کنیم و Type Annotation را برای هر کدام از Property های آن لحاظ کنیم. کد زیر این موضوع را نشان می دهد.
var employee : {
id: number;
name: string;
};
employee = {
id: 100,
name : "John"
}
در کد بالا یک Object با نام employee تعریف شده است که دارای دو Property با نام id و name می باشد و Data Type های آن ها به ترتیب Number و String می باشند.
پس از انجام این کار اگر سعی کنید یک مقدار رشته ای در متغیر id قراردهید، کامپایلر TypeScript خطا تولید خواهد کرد.