TypeScript - Окружающие
Окружающие объявления - это способ сообщить компилятору TypeScript, что фактический исходный код существует в другом месте. Когда вы потребляете кучу стороннихjsбиблиотеки, такие как jquery / angularjs / nodejs, вы не можете переписать в TypeScript. Обеспечение безопасности типов и интеллекта при использовании этих библиотек будет сложной задачей для программиста TypeScript. Окружающие декларации помогают легко интегрировать другиеjs библиотеки в TypeScript.
Определение окружения
Окружающие объявления по соглашению хранятся в файле объявления типа со следующим расширением (d.ts)
Sample.d.ts
Приведенный выше файл не будет преобразован в JavaScript. Он будет использоваться для обеспечения безопасности типов и intellisense.
Синтаксис для объявления внешних переменных или модулей будет следующим:
Синтаксис
declare module Module_Name {
}
На внешние файлы следует ссылаться в клиентском файле TypeScript, как показано -
/// <reference path = " Sample.d.ts" />
пример
Давайте разберемся в этом на примере. Предположим, вам предоставлена сторонняя библиотека javascript, которая содержит код, похожий на этот.
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();
}
}
}
}
}
Как программист машинописного текста у вас не будет времени переписать эту библиотеку на машинописный текст. Но все же вам нужно использовать метод doSum () с типобезопасностью. Что вы можете сделать, так это файл внешней декларации. Создадим файл внешней декларации Calc.d.ts
FileName: Calc.d.ts
declare module TutorialPoint {
export class Calc {
doSum(limit:number) : number;
}
}
Внешние файлы не будут содержать реализации, это просто объявления типов. Теперь объявления необходимо включить в файл машинописного текста следующим образом.
FileName : CalcTest.ts
/// <reference path = "Calc.d.ts" />
var obj = new TutorialPoint.Calc();
obj.doSum("Hello"); // compiler error
console.log(obj.doSum(10));
Следующая строка кода покажет ошибку компилятора. Это потому, что в файле объявления мы указали, что входным параметром будет число.
obj.doSum("Hello");
Прокомментируйте приведенную выше строку и скомпилируйте программу, используя следующий синтаксис -
tsc CalcTest.ts
При компиляции он сгенерирует следующий код JavaScript (CalcTest.js).
//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-страницу с тегами сценария, как указано ниже. Добавьте скомпилированный файл CalcTest.js и файл сторонней библиотеки CalcThirdPartyJsLib.js.
<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>
Будет отображена следующая страница -
На консоли вы можете увидеть следующий вывод -
55
Точно так же вы можете интегрировать jquery.d.ts или angular.d.ts в проект в зависимости от ваших требований.