متغیرها در زبان برنامه نویسی TypeScript
یک متغیر بر طبق تعریف “یک فضای نامی در حافظه” است که مقادیر را در خود نگه می دارد. به عبارت دیگر متغیر به عنوان یک ظرف برای نگه داری مقادیر مورد استفاده قرار می گیرد. شیوه نامگذاری متغیرها در TypeScript از قوانین نامگذاری متغیر در زبان جاوا اسکریپت پیروی می کند.
- نام متغیر می تواند شامل حروف الفبا و اعداد باشد.
- نام متغیر نمی تواند شامل فضای خالی، کاراکترهای ویژه به جز خط زیر (_) و علامت دلار ($) باشد.
- نام متغیر نمی تواند با عدد شروع شود.
اعلان متغیر در TypeScript
سینتکس تعریف متغیر در زبان تایپ اسکریپت را می توانید در زیر مشاهده کنید. چهار روش برای تعریف متغیر وجود دارد:
- اعلان نوع و مقدار متغیر در یک خط.
- اعلان نوع متغیر بدون مقدار دهی. در این صورت مقدار متغیر undefined تنظیم می شود.
- اعلان با مقدار دهی اما بدون مشخص کردن نوع. در این صورت نوع متغیر با توجه به مقدار اختصاص داده شده تنظیم می شود.
- اعلان بدون نوع و مقدار. در این صورت متغیر از نوع any و با مقدار undefined تنظیم می شود.
در جدول زیر می توانید برای هر روشی که در بالا گفته شد، یک نمونه را مشاهده کنید.
ردیف | سینتکس اعلان متغیر و توضیحات |
1 | var name:string = ”mary” متغیر یک مقدار از نوع رشته (String) را در خود نگه می دارد. |
2 | var name:string; یک متغیر از نوع رشته که به صورت پیشفرض با مقدار undefined تنظیم شده است. |
3 | var name = ”mary” یک متغیر که نوع آن با توجه به مقداری به آن اختصاص داده شده است مشخص می شود. در این مثال متغیر از رشته است. |
4 | var name; یک متغیر با نوع any و مقدار پیشفرض undefined. |
مثال
متغیرها در تایپ اسکریپت:
1 2 3 4 5 6 7 8 9 | var name:string = "John"; var score1:number = 50; var score2:number = 42.50 var sum = score1 + score2 console.log("name"+name) console.log("first score: "+score1) console.log("second score: "+score2) console.log("sum of the scores: "+sum) |
بعد از کامپایل شدن خروجی زیر تولید خواهد شد:
1 2 3 4 5 6 7 8 9 10 | //Generated by typescript 1.8.10 var name = "John"; var score1 = 50; var score2 = 42.50; var sum = score1 + score2; console.log("name" + name); console.log("first score: " + score1); console.log("second score : " + score2); console.log("sum of the scores: " + sum); |
خروجی برنامه بالا:
1 2 3 4 | name:John first score:50 second score:42.50 sum of the scores:92.50 |
زمانی که ما بخواهیم به متغیر برای مثال از نوع number مقداری از نوع string را اختصاص دهیم، کامپایلر خطا تولید می کند.
1 | var num:number = "hello" // will result in a compilation error |
Type Assertion در TypeScript
در تایپ اسکریپت می توانید نوع متغییر را به نوع دیگری تغییر دهید. به این فرآیند در زبان تایپ اسکریپت Type Assertion گفته می شود. سینتکس اینکار به این صورت است که نوع هدف را در داخل <> قبل از عبارت یا متغیر قرار می دهیم. مثال زیر نحوه تبدیل نوع یک متغیر از نوع رشته به عدد را نشان می دهد.
1 2 3 4 | var str = '1' var str2:number = <number> <any> str //str is now of type number console.log(str2) |
بعد از کامپایل شدن کد زیر تولید می شود:
1 2 3 4 5 | //Generated by typescript 1.8.10 var str = '1'; var str2 = str; //str is now of type number console.log(str2); |
خروجی برنامه:
1 | 1 |
تشخیص نوع در TypeScript
در تایپ اسکریپت می توانید نوع متغیر را مشخص نکنید. در این حالت نوع متغیر با توجه به اولین مقداری که به آن اختصاص داده می شود، تنظیم می گردد.
مثال
1 2 3 4 | var num = 2; // data type inferred as number console.log("value of num "+num); num = "12"; console.log(num); |
در کد فوق:
- یک متغیر با نام num و مقدار 2 اعلان نشده است. توجه داشته باشید که ما نوع متغیر را مشخص نکردیم. با این حال برنامه نوع آن را با توجه به مقداری که در اولین استفاده به آن داده شده است، تعیین می کند.
- در بخش دوم ما یک رشته را به متغیر num اختصاص داده ایم. اما این موضوع باعث بروز خطا می شود چون قبلا نوع آن به صورت number تعیین شده است.
کد فوق خطای زیر را تولید می کنید:
1 | error TS2011: Cannot convert 'string' to 'number'. |
حوزه متغیرها در TypeScript
حوزه متغیر مشخص می کند که متغیر در کجا تعریف شده است و آیا می توان به آن دسترسی داشت یا خیر. حوزه های موجود در زبان برنامه نویسی تایپ اسکریپت:
- سراسری (Global): متغیرهای سراسری خارج از ساختار برنامه نویسی اعلام می شوند. این نوع از متغیر ها در هر جایی از برنامه در دسترس هستند.
- کلاس (Class) : فیلد نام دیگر این نوع از متغیرها است. این متغیرها در داخل کلاس و خارج از متدها تعریف می شوند. این نوع متغیرها می توانند به صورت static نیز تعریف شوند که در این صورت با استفاده از نام کلاس می توان به آن دسترسی داشت.
- محلی (Lcoal) : این متغیرها در داخل سازنده ها، متدها، حلقه ها و غیره تعریف می شوند و فقط در جایی که تعریف شده اند در دسترس هستند.
مثال
مثال زیر حوزه متغیرها در زبان برنامه نویسی TypeScript را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var global_num = 12 //global variable class Numbers { num_val = 13; //class variable static sval = 10; //static field storeNum():void { var local_num = 14; //local variable } } console.log("Global num: "+global_num) console.log(Numbers.sval) //static variable var obj = new Numbers(); console.log("Global num: "+obj.num_val) |
کد جاوا اسکریپت تولید شده بعد از کامپایل شدن:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | var global_num = 12; //global variable var Numbers = (function () { function Numbers() { this.num_val = 13; //class variable } Numbers.prototype.storeNum = function () { var local_num = 14; //local variable }; Numbers.sval = 10; //static field return Numbers; }()); console.log("Global num: " + global_num); console.log(Numbers.sval); //static variable var obj = new Numbers(); console.log("Global num: " + obj.num_val); |
خروجی برنامه فوق:
1 2 3 | Global num: 12 10 Global num: 13 |
اگر از یک متغیر محلی در خارج از حوزه ای که تعریف شده استفاده کنید با خطای زیر مواجه خواهید شد.
1 | error TS2095: Could not find symbol 'local_num'. |
هیچ نظری ثبت نشده است