TypeScript - otoczenie
Deklaracje otoczenia są sposobem na poinformowanie kompilatora TypeScript, że rzeczywisty kod źródłowy istnieje w innym miejscu. Kiedy konsumujesz grupę osób trzecichjsbibliotek, takich jak jquery / angularjs / nodejs, nie można ich przepisać w TypeScript. Zapewnienie bezpieczeństwa typów i inteligencji podczas korzystania z tych bibliotek będzie wyzwaniem dla programisty TypeScript. Deklaracje otoczenia pomagają bezproblemowo integrować innejs biblioteki do TypeScript.
Definiowanie otoczenia
Deklaracje otoczenia są zgodnie z konwencją przechowywane w pliku deklaracji typu z następującym rozszerzeniem (d.ts)
Sample.d.ts
Powyższy plik nie zostanie transkompilowany do JavaScript. Będzie używany do zapewnienia bezpieczeństwa typów i inteligencji.
Składnia deklarowania zmiennych otoczenia lub modułów będzie następująca:
Składnia
declare module Module_Name {
}
Pliki otoczenia powinny być przywoływane w pliku TypeScript klienta, jak pokazano -
/// <reference path = " Sample.d.ts" />
Przykład
Zrozummy to na przykładzie. Załóżmy, że otrzymałeś bibliotekę javascript innej firmy, która zawiera kod podobny do tego.
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();
}
}
}
}
}
Jako programista maszynopisów nie będziesz miał czasu na przepisanie tej biblioteki do maszynopisu. Ale nadal musisz użyć metody doSum () z bezpieczeństwem typów. To, co możesz zrobić, to plik deklaracji otoczenia. Utwórzmy plik deklaracji otoczenia Calc.d.ts
FileName: Calc.d.ts
declare module TutorialPoint {
export class Calc {
doSum(limit:number) : number;
}
}
Pliki otoczenia nie będą zawierały implementacji, są to tylko deklaracje typów. Deklaracje należy teraz dołączyć do pliku maszynopisu w następujący sposób.
FileName : CalcTest.ts
/// <reference path = "Calc.d.ts" />
var obj = new TutorialPoint.Calc();
obj.doSum("Hello"); // compiler error
console.log(obj.doSum(10));
Poniższy wiersz kodu pokaże błąd kompilatora. Dzieje się tak, ponieważ w pliku deklaracji określiliśmy, że parametrem wejściowym będzie liczba.
obj.doSum("Hello");
Skomentuj powyższą linię i skompiluj program, używając następującej składni -
tsc CalcTest.ts
Podczas kompilacji wygeneruje następujący kod 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));
Aby wykonać kod, dodajmy stronę html ze znacznikami script, jak podano poniżej. Dodaj skompilowany plik CalcTest.js i plik biblioteki innej firmy 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>
Wyświetli następującą stronę -
Na konsoli możesz zobaczyć następujące dane wyjściowe -
55
Podobnie możesz zintegrować jquery.d.ts lub angular.d.ts z projektem, w zależności od wymagań.