**TypeScript** - гэта вольная мова праграмавання высокага ўзроўню з адкрытым зыходным кодам. Яна распрацавана Microsoft. TypeScript дадае ў JavaScript статычную тыпізацыю з дадатковымі анатацыямі тыпаў. Яна прызначана для распрацоўкі вялікіх дадаткаў і транспілюе на JavaScript. Паколькі TypeScript з'яўляецца падмноствам JavaScript, усе праграмы на JavaScript сінтаксічна карэктныя для TypeScript, аднак у мэтах бяспекі яны могуць не праходзіць праверку тыпаў.

TypeScript можа выкарыстоўвацца для распрацоўкі JavaScript-дадаткаў як для выканання на баку кліента, так і на баку сервера (як у Node.js ці Deno). Для транспіляцыі даступна некалькі варыянтаў. Можна выкарыстоўваць стандартны кампілятар TypeScript, або можна выклікаць кампілятар Babel для пераўтварэння TypeScript у JavaScript.

TypeScript падтрымлівае файлы азначэнняў, якія могуць утрымоўваць інфармацыю аб тыпах існых бібліятэк JavaScript, падобна таму як загалоўкавыя файлы C++ могуць апісваць структуру існых аб'ектных файлаў. Гэта дазваляе іншым праграмам выкарыстоўваць значэнні, вызначаныя ў гэтых файлах, як калі б яны былі статычна тыпізаванымі сутнасцямі TypeScript. Існуюць іншыя загалоўкавыя файлы для такіх папулярных бібліятэк, як jQuery, MongoDB і D3.js. Таксама даступныя загалоўкі TypeScript для модуляў бібліятэк Node.js, што дазваляе распрацоўваць праграмы на Node.js у рамках TypeScript.

Кампілятар TypeScript сам напісаны на мове TypeScript і скампіляваны ў JavaScript. Ён ліцэнзуецца ў адпаведнасці з ліцэнзіяй Apache License 2.0. Андэрс Хэйлсберг, вядучы архітэктар C# і стваральнік Delphi і Turbo Pascal, удзельнічаў у распрацоўцы TypeScript.

Асаблівасці
-----------

TypeScript - гэта пашырэнне мовы, якое дадае магчымасці ў ECMAScript 6. Дадатковыя магчымасці ўключаюць:

* Анатацыі тыпу і праверка тыпу падчас кампіляцыі
* Вывад тыпу
* Сціранне тыпу
* Інтэрфейсы
* Пералічальныя тыпы
* Джэнерыкі
* Прастор імёнаў
* Картэжы
* Async/await

Наступныя функцыі перанесены з ECMAScript 2015:

* Класы
* Модулі
* Скарочаны сінтаксіс "стрэлкі" для ананімных функцый
* Неабавязковыя параметры і параметры па змаўчанні

Сінтаксічна TypeScript вельмі падобны на JScript.NET, іншая рэалізацыя Microsoft моўнага стандарту ECMA-262, якая дадала падтрымку статычнага тыпу і класічных функцый аб'ектна-арыентаванай мовы, такіх як класы, спадчыннасць, інтэрфейсы і прастор імёнаў.

### Сумяшчальнасць з JavaScript

TypeScript з'яўляецца строгім супермноствам ECMAScript 2015, які сам з'яўляецца супермноствам ECMAScript 5, звычайна званага JavaScript. Такім чынам, праграма на JavaScript таксама з'яўляецца карэктнай праграмай на TypeScript, а праграма на TypeScript можа без праблем выкарыстоўваць JavaScript. Па змаўчанні кампілятар арыентаваны на ECMAScript 5, які зараз з'яўляецца пераважным стандарт, але таксама здольны генераваць канструкцыі, якія выкарыстоўваюцца ў ECMAScript 3 ці 2015.

З дапамогай TypeScript можна выкарыстоўваць існуючы код JavaScript, уключаць у яго папулярныя бібліятэкі JavaScript і выклікаць код, згенераваны на TypeScript, з іншых бібліятэк JavaScript. Дэкларацыі тыпаў для гэтых бібліятэк прадастаўляюцца разам з зыходным кодам.

### Анатацыі тыпаў

TypeScript забяспечвае статычную тыпізацыю з дапамогай анатацый тыпаў, што дазваляе выконваць праверку тыпаў падчас кампіляцыі. Гэта неабавязкова і можа быць праігнаравана для выкарыстання звычайнай дынамічнай тыпізацыі JavaScript.

```
function add(left: number, right: number): number {
 return left + right;
}

```

### Класы

TypeScript падтрымлівае класы ECMAScript 2015, у якіх рэалізавана падтрымка дадатковых анатацый тыпаў.

```
class Person {
 private name: string;
 private age: number;
 private salary: number;

 constructor(name: string, age: number, salary: number) {
 this.name = name;
 this.age = age;
 this.salary = salary;
 }

 toString(): string {
 return `${this.name} (${this.age}) (${this.salary})`; // As of version 1.4
 }
}

```

### Джэнерыкі

TypeScript падтрымлівае абагульненае праграмаванне. Ніжэй прыведзены прыклад выкарыстання функцыі Identity.

```
function id<T>(x: T): T {
 return x;
}

```

Зноскі
------

1. ↑  Type Compatibility **(нявызн.)**. *TypeScript*. Праверана 21 March 2018.
2. ↑  *Bright*. Microsoft TypeScript: the JavaScript we need, or a solution looking for a problem? **(нявызн.)**. *Ars Technica*.  Condé Nast (3 кастрычніка 2012). Праверана 26 April 2015.
3. ↑  TypeScript Programming with Visual Studio Code (англ.). *code.visualstudio.com*. Праверана 12 February 2019.
4. ↑  borisyankov/DefinitelyTyped **(нявызн.)**. *GitHub*. Праверана 26 April 2015.
5. ↑  *Foley*. Microsoft takes the wraps off TypeScript, a superset of JavaScript **(нявызн.)**. *ZDNet*.  CBS Interactive (1 кастрычніка 2012). Праверана 26 April 2015.
6. ↑  *Somasegar*. Somasegar's blog **(нявызн.)**.  Microsoft (1 кастрычніка 2012). Праверана 26 April 2015.
7. ↑  *Baxter-Reynolds*. Microsoft TypeScript: Can the father of C# save us from the tyranny of JavaScript? **(нявызн.)**. *ZDNet* (1 кастрычніка 2012). Праверана 26 April 2015.
8. ↑  *Jackson*. Microsoft Augments Javascript for Large-scale Development **(нявызн.)**. *CIO*.  IDG Enterprise (1 кастрычніка 2012). Архівавана з першакрыніцы 17 December 2013. Праверана 26 April 2015.
9. ↑  *Klint Finley*. Microsoft Previews New JavaScript-Like Programming Language TypeScript **(нявызн.)**.  TechCrunch (1 кастрычніка 2012). Праверана 27 November 2013.
10. ↑  Angular 2 **(нявызн.)**. *angular.io*. Праверана 4 May 2016.
11. ↑  Welcome to TypeScript **(нявызн.)**. *typescriptlang.org*.  Microsoft. Праверана 26 April 2015.
12. ↑  *Turner*. Announcing TypeScript 0.9 **(нявызн.)**. *TypeScript Language team blog*.  Microsoft (18 чэрвеня 2013).
13. ↑  Generics in Typescript **(нявызн.)**.  Microsoft.