Ambient ها در زبان برنامه نویسی TypeScript
با استفاده از Ambient ها می توانیم به کامپایلر تایپ اسکریپت بگویم که سورس واقعی در جای دیگر قرار دارد. استفاده از Ambient ها به یکپارچه سازی سایر کتابخانه های js استفاده شده در TypeScript کمک می کند.
تعریف Ambient ها
بر طبق قرار داد، فایل هایی که شامل Ambient ها هستند، با پسوند زیر مشخص می شوند:
1 | Sample.d.ts |
فایل هایی که با این پسوند باشند، به جاوا اسکریپت کامپایل نمی شوند و فقط برای حفظ امینت نوع داده ها (typesafety) و intellisense استفاده می شوند. در زیر می توانید سینتکس مربوط به اعلان متغیرهای Ambient یا ماژول ها را مشاهده کنید:
1 2 | declare module Module_Name { } |
فایل های Ambient باید در فایل کلاینت TypeScript به صورت Reference مشخص شوند:
1 | /// <reference path = " Sample.d.ts" /> |
مثال:
فرض کنید شما یک کتابخانه شخص ثالث جاوا اسکریپت با کد زیر دارید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | FileName: CalcThirdPartyJsLib.js var TutorialPoint; (function (TutorialPoint) { var Calc = (function () { function Calc() { } Calc.prototype.doSum = function (limit) { var sum = 0; for (var i = 0; i <= limit; i++) { Calc.prototype.doSum = function (limit) { var sum = 0; for (var i = 0; i <= limit; i++) { sum = sum + i; return sum; return Calc; TutorialPoint.Calc = Calc; })(TutorialPoint || (TutorialPoint = {})); var test = new TutorialPoint.Calc(); } } } } } |
به عنوان یک برنامه نویس TypeScript زمان کافی برای نوشتن این کتابخانه با تایپ اسکریپت را ندارید. اما لازم است تا از متد doSum() را با typesafety استفاده کنید. در اینگونه مواقع می توانیم از Ambient ها استفاده کنیم. یک فایل Ambient با نام Calc.d.ts مانند نمونه زیر ایجاد کنید:
1 2 3 4 5 6 | FileName: Calc.d.ts declare module TutorialPoint { export class Calc { doSum(limit:number) : number; } } |
توجه داشته باشید که فایل Ambient شامل پیادهسازی موارد اعلان شده نیستند. حال باید اعلان فوق را در فایل TypeScript مورد نظر وارد کنیم:
1 2 3 4 5 | FileName : CalcTest.ts /// <reference path = "Calc.d.ts" /> var obj = new TutorialPoint.Calc(); obj.doSum("Hello"); // compiler error console.log(obj.doSum(10)); |
در کد فوق کد زیر، باعث تولید خطای کامپایلر خواهد شد. زیرا ما در اعلان این تابع نوع پارامتر ورودی را به صورت number مشخص کرده ایم.
1 | obj.doSum("Hello"); |
خط بالا را کامنت کنید و برنامه را با دستور زیر کامپایل کنید:
1 | tsc CalcTest.ts |
خروجی کامپایل شده فایل CalcTest.js:
1 2 3 4 5 6 | //Generated by typescript 1.8.10 /// <reference path = "Calc.d.ts" /> var obj = new TutorialPoint.Calc(); // obj.doSum("Hello"); console.log(obj.doSum(10)); |
برای اجرای کد فوق، یک صفحه HTML با تگ ها script مانند نمونه زیر اضافه کنیم.
1 2 3 4 5 6 7 8 9 | <html> <body style = "font-size:30px;"> <h1>Ambient Test</h1> <h2>Calc Test</h2> </body> <script src = "CalcThirdPartyJsLib.js"></script> <script src = "CalcTest.js"></script> </html> |
در کد فوق CalcTest.js فایل کامپایل شده و CalcThirdPartyJsLib.js فایل کتابخانه شخص ثالث است. خروجی برنامه در مرورگر مشابه تصویر زیر خواهد بود:
اگر کنسول مرورگر را مشاهده کنید، خروجی زیر را خواهید دید:
1 | 55 |
به همین ترتیب می توانید بر اساس نیاز خود ، jquery.d.ts یا angular.d.ts را به یک پروژه اضافه کنید.
هیچ نظری ثبت نشده است