**ТајпСкрипт** е програмски јазик развиен и одржуван од Microsoft. Тоа е строг синтаксички суперсет на JavaScript и додава изборно статичко пишување на јазикот. ТајпСкрипт е дизајниран за развој на големи апликации и транскомпајли во JavaScript. Бидејќи ТајпСкрипт е супер група на JavaScript, постојните JavaScript програми се исто така валидни ТајпСкрипт програми.

ТајпСкрипт може да се користи за развој на JavaScript апликации и за извршување од страна на клиентот и за серверот (како со Node.js или Deno). Постојат повеќе опции на располагање за транскомпилација. Може да се користи стандардниот Проверувач на ТајпСкрипт, или може да се повика компајлерот Babel за да го претвори ТајпСкрипт во JavaScript.

ТајпСкрипт поддржува податотеки за дефиниција што можат да содржат информации за типот на постојните библиотеки на JavaScript, слично како што податотеките со наслови C ++ можат да ја опишат структурата на постојните податотеки со објекти. Ова им овозможува на другите програми да ги користат вредностите дефинирани во податотеките како да се статички напишани ентитети на ТајпСкрипт. Постојат податотеки со наслови од некои трети страни за популарни библиотеки како што се jQuery, MongoDB и D3.js. Исто така, достапни се наслови на ТајпСкрипт за основните модули на Node.js, што овозможува развој на програмите на Node.js во рамките на ТајпСкрипт.

составувачот ТајпСкрипт и самиот е напишан во ТајпСкрипт и составен на JavaScript. Таа е лиценцирана под лиценцата Apache 2.0. ТајпСкрипт е вклучен како првокласен програмски јазик во Microsoft Visual Studio 2013 Update 2 и поновите верзии, заедно со C # и другите јазици на Microsoft. Официјално проширување му овозможува на Visual Studio 2012 да поддржува и ТајпСкрипт. Андерс Хејлсберг, водечки архитект на С# и творец на Делфи и Турбо Паскал, работел на развојот на ТајпСкрипт.

Историја
--------

ТајпСкрипт првпат бил објавен во јавноста во октомври 2012 година (во верзија 0.8), по две години внатрешен развој во Microsoft. Наскоро по објавувањето, Мигел де Иказа го пофалил самиот јазик, но го критикувал недостатокот на зрела поддршка за IDE, освен Microsoft Visual Studio, кој во тоа време не бил достапен на Linux и OS X  Денес постои поддршка и кај другите IDE, особено во Eclipse, преку приклучок придонесен од Palantir Technologies. Различни уредници на текст, вклучувајќи ги Emacs, Vim, Webstorm, Atom и сопствениот Visual Studio Code на Microsoft, исто така, поддржуваат ТајпСкрипт.

ТајпСкрипт 0.9, објавен во 2013 година, додал поддршка за генеричките производи. Ракопис 1.0 беше објавен во конференцијата за развивачи на Microsoft во 2014 година. Верзијата 2 на Visual Studio 2013 обезбедува вградена поддршка за ТајпСкрипт.

Во јули 2014 година, тимот за развој објавил нов составувач на ТајпСкрипт, тврдејќи петкратни придобивки во перформансите. Истовремено, изворниот код, кој првично беше домаќин на CodePlex, бил преместен во GitHub.

На 22 септември 2016 година е објавен ТајпСкрипт 2.0; воведувајќи неколку одлики, вклучувајќи ја и можноста програмерите по избор да спречуваат променливи да им се доделуваат ``null`` вредности, што понекогаш се нарекува грешката од милијарда долари .

ТајпСкрипт 3.0 бил објавен на 30 јули 2018 година, со што се дополнуваа многу јазични додатоци, како "tuples", во параметрите за одмор и изразите на ширењето, параметрите за одмор со tuple типовите, општите параметри за одмор и така натаму.

ТајпСкрипт 4.0 бил објавен на 20-ти август 2020 година. Додека 4.0 не вовел никакво кршење на промените, тој додал јазични одлики како што се прилагодените фабрики JSX и типови со различен тип.

Дизајн
------

ТајпСкрипт потекнува од недостатоците на JavaScript за развој на големи апликации како во Microsoft така и меѓу нивните надворешни клиенти. Предизвиците во справувањето со сложениот JavaScript код доведоа до побарувачка за сопствено подготвување алатки за олеснување на развојот на компонентите на јазикот.

Програмерите на ТајпСкрипт барале решение што нема да ја наруши компатибилноста со стандардот и неговата поддршка преку платформа. Знаејќи дека сегашниот стандарден предлог ECMAScript ветува идна поддршка за програмирање засновано на класа, ТајпСкрипт се заснова на тој предлог. Тоа доведе до составувач на JavaScript со збир на синтаксички јазични екстензии, суперсет заснован на предлогот, што ги трансформира наставките во редовен JavaScript. Во оваа смисла, ТајпСкрипт бил преглед на тоа што можело да се очекува од ECMAScript 2015 година. Уникатен аспект што не е во предлогот, но е додаден на ТајпСкрипт, е изборно статичко пишување, што овозможува анализа на статички јазик, што ја олеснува алатката и поддршката на IDE.

### Поддршка за ECMAScript 2015 година

ТајпСкрипт овозможува и поддршка за одлики како што се класи, модули и синтаксата на на стрелната функција, дефинирано во стандардот ECMAScript 2015.

Одлики
------

ТајпСкрипт е јазично проширување што додава одлики на ECMAScript 6. Дополнителните одлики вклучуваат:

* Внесови на прибелешки и проверка на типот на време на компилирање
* Внесови за заклучок
* Внесови за бришење
* Интерфејси
* Наброени типови
* Генерики
* Именски простори
* Тупли
* Асинх

Следниве одлики се вратени од ECMAScript 2015:

* Класи
* Модули
* Скратена синтакса "стрела" за анонимни функции
* Факултативни параметри и стандардни параметри

Синтаксички, ТајпСкрипт е многу сличен на JScript. NET, една друга имплементација на Microsoft за стандардот за јазик ECMA-262 што додало поддршка за статичко пишување и класични објектно-ориентирани јазични одлики како што се класи, наследство, интерфејси и именски простори.

### Компатибилност со JavaScript

ТајпСкрипт е супер група на ECMAScript 2015, што е самата супер група на ECMAScript 5, најчесто наречена JavaScript. Како таква, JavaScript програмата е исто така валидна ТајпСкрипт програма, а ТајпСкрипт програма може беспрекорно да користи JavaScript. Стандардно, составувачот е насочен кон ECMAScript 5, сегашниот стандард што преовладува, но исто така е во можност да генерира конструкции што се користат во ECMAScript 3 или 2015.

Со ТајпСкрипт, можно е да се користи постоечки JavaScript код, да се вклучат популарни библиотеки JavaScript и да се повика ТајпСкрипт-генериран код од друг JavaScript. Внесовите за декларации за овие библиотеки се дадени со изворен код.

### Внесови за прибелешки

ТајпСкрипт обезбедува статичко пишување преку внесови за прибелешки за да овозможи проверка на типот во времето на компајлирање. Ова е опционално и може да се игнорира за да се користи редовното динамично пишување на JavaScript.

Забелешките за примитивните типови се `number`, `boolean` и `string`. Слаби или динамички типизирани структури се од типот на `any` .

Внесовите за забелешки може да се извезат во посебна *датотека за декларации за* да се направат достапни информации за типот на скриптите ТајпСкрипт со употреба на типови веќе собрани во JavaScript. Забелешките може да се декларираат за постојната библиотека JavaScript, како што е направено за Node.js и jQuery .

составувачот ТајпСкрипт користи внес за заклучок за типови кога типовите не се дадени. На пример, `add` во кодот погоре ќе се заклучи дека враќа `number` дури и ако не беше дадена забелешка за тип на поврат. Ова се заснова на статичките типови на `left` и `right` кои се всушност `numbers` и сознанието на составувачот дека резултатот од собирање два `numbers` е секогаш `number`. Сепак, експлицитно изјавување на типот на враќање му овозможува на компајлерот да ја потврди точноста.

Ако ниту еден тип поради недостаток на декларации не може да се претпостави, тогаш тој се поставува како стандард на кој било вид. Вредност од `any` тип ги поддржува истите операции како и вредноста во JavaScript и се врши минимално проверување на статички тип за операции на `any` вредности.

#### Податотеки за декларација

Кога скриптата ТајпСкрипт станува компилирана, постои опција да генерирате *датотека* за декларација (со продолжение во името `.d.ts` ) што функционира како интерфејс на компонентите во составениот JavaScript. Во процесот, составувачот ги отстранува сите тела на функциите и методите и ги зачувува само потписите од типовите што се извезуваат. Како резултат, податотеката за декларација може да се искористи за да се опишат извезените виртуелни типови на скрипти на библиотека или модул на JavaScript кога третиот развивач ќе ги потроши од ТајпСкрипт.

Концептот на податотеки за декларација е аналоген на концептот на податотека со заглавие што се наоѓа во C / C ++ .

Податотеките за декларација за типови можат да бидат напишани рачно за постојните библиотеки на JavaScript, како што е направено за jQuery и Node.js.

Големите колекции на податотеки за декларација за популарните библиотеки на JavaScript се хостирани на GitHub во DefinitelyTyped .

### Класи

ТајпСкрипт ги поддржува класи ECMAScript 2015 кои ја интегрираат изборната поддршка за прибелешки за тип.

### Генерики

ТајпСкрипт поддржува генеричко програмирање. Следното е пример за функцијата на идентитет.

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

```

### Модули и именски простори

ТајпСкрипт прави разлика помеѓу модулите и именските простори. Двете одлики во ТајпСкрипт поддржуваат капсулација на класи, интерфејси, функции и променливи во контејнери. Просторите за имиња (порано внатрешни модули) користат експресија на функции што веднаш се повикуваат на JavaScript за да капсулираат код, додека модулите (поранешни надворешни модули) ги користат шаблоните на библиотеката JavaScript за да го сторат тоа ( AMD или CommonJS).

Алатки за развој
----------------

### Составувач

Составувачот ТајпСкрипт, именуван `tsc`, е напишан во ТајпСкрипт. Како резултат, може да се состави во редовен JavaScript и потоа може да се изврши во кој било JavaScript мотор (на пр. Прелистувач). Пакетот за компајлери е во комплет со домаќин на скрипта што може да го изврши компајлерот. Исто така е достапен како пакет Node.js што го користи Node.js како домаќин.

Тековната верзија на составувачот стандардно го поддржува ECMAScript 5. Дозволена е опција за насочување кон ECMAScript 2015 за да се користат јазични одлики исклучиво на таа верзија (на пр. Генератори). Класите, и покрај тоа што се дел од стандардот ECMAScript 2015, се достапни во двата режима.

### Поддршка за IDE и уредник

* Мајкрософт обезбедува приклучок за Visual Studio 2012 и WebMatrix, целосна интегрирана поддршка во Visual Studio 2013, Visual Studio 2015 и основна поддршка за уредник на текст за Emacs и Vim .
* Visual Studio Code е (претежно) уредник на изворен код со отворен извор, крос-платформски развиен од Мајкрософт заснован на Електрон. Поддржува ТајпСкрипт покрај неколку други јазици и нуди одлики како дебагирање и интелигентно завршување на кодот .
* alm.tools е IDE со отворен извор на облак за ТајпСкрипт изграден со употреба на ТајпСкрипт, ReactJS и TypeStyle.
* JetBrains поддржува ТајпСкрипт со комплетирање на код, рефакторирање и дебагирање во своите IDE изградени на платформата IntelliJ, како што се PhpStorm 6, WebStorm 6 и IntelliJ IDEA, како и нивниот додаток и проширување на Visual Studio, ReSharper 8.1.
* Атом има додаток на ТајпСкрипт од Basarat со поддршка за завршување на кодот, навигација, форматирање и брза компилација.
* Интернет Cloud9 IDE и Codenvy поддржуваат ТајпСкрипт.
* Достапен е приклучок за NetBeans IDE .
* Достапен е додаток за Eclipse IDE (верзија Кеплер)
* TypEcs е достапен за Eclipse IDE .
* Крстот на платформата Облак IDE Codeanywhere поддржува ТајпСкрипт.
* Webclipse Приклучок за Затемнување дизајниран да развива ТајпСкрипт и Angular 2 .
* Аголен IDE Самостоен IDE достапен преку npm за развој на апликации ТајпСкрипт и Angular 2, со интегрирана поддршка за терминал.
* Плима – ТајпСкрипт Интерактивно развојно опкружување за Емакс .

### Интеграција со алатки за автоматизација на градење

Користејќи приклучоци, ТајпСкрипт може да се интегрира со алатки за автоматизација на градење  ), Apache Maven (ТајпСкрипт Maven додаток  ), Gulp (gulp-ТајпСкрипт  ) и Gradle (ТајпСкрипт Gradle Приклучок  ).

### Алатки за обложување

TSLint  скенира ТајпСкрипт кодот за усогласеност со збир на стандарди и упатства. ESLint, стандардна постава на JavaScript, исто така, обезбеди одредена поддршка за ТајпСкрипт преку приклучоци за заедницата. Сепак, неможноста на ESLint да ги искористи јазичните услуги на ТајпСкрипт исклучи одредени форми на семантичко обложување и анализа низ целата програма. На почетокот на 2019 година, тимот на TSLint објави амортизација на постелнината во корист на `ТајпСкрипт-eslint`, заеднички напор на тимовите TSLint, ESLint и ТајпСкрипт за консолидирање на обложувањата под чадорот ESLint за подобри перформанси, единство во заедницата и пристапност на развивачите. За употреба на ТајпСкрипт со ESLint, треба да ги додадете `@ТајпСкрипт-eslint/eslint-plugin` и `@ТајпСкрипт-eslint/parser` .

Наводи
------

1. ↑  Bright, Peter (3 October 2012). „Microsoft TypeScript: the JavaScript we need, or a solution looking for a problem?". *Ars Technica*. Condé Nast. Посетено на 26 April 2015.
2. ↑  „TypeScript Programming with Visual Studio Code". *code.visualstudio.com* (англиски). Посетено на 12 February 2019.
3. ↑  „borisyankov/DefinitelyTyped". *GitHub*. Посетено на 26 April 2015.
4. ↑  TypeScript Homepage, *"Visual Studio includes TypeScript in the box, starting with Visual Studio 2013 Update 2"*
5. ↑  TypeScript 1.0 Tools for Visual Studio 2012
6. ↑  Foley, Mary Jo (1 October 2012). „Microsoft takes the wraps off TypeScript, a superset of JavaScript". *ZDNet*. CBS Interactive. Посетено на 26 April 2015.
7. ↑  Somasegar, S. (1 October 2012). „Somasegar's blog". Microsoft. Посетено на 26 April 2015.
8. ↑  Baxter-Reynolds, Matt (1 October 2012). „Microsoft TypeScript: Can the father of C# save us from the tyranny of JavaScript?". *ZDNet*. Посетено на 26 April 2015.
9. ↑  Jackson, Joab (1 October 2012). „Microsoft Augments Javascript for Large-scale Development". *CIO*. IDG Enterprise. Архивирано од изворникот на 2013-12-17. Посетено на 26 April 2015.
10. ↑  „Microsoft augments JavaScript for large-scale development". *InfoWorld*. IDG. 1 October 2012. Посетено на 26 April 2015.
11. ↑  Turner, Jonathan (2 April 2014). „Announcing TypeScript 1.0". *TypeScript Language team blog*. Microsoft. Архивирано од изворникот на 2015-05-02. Посетено на 26 April 2015.
12. ↑  Miguel de Icaza (1 October 2012). „TypeScript: First Impressions". Посетено на 12 October 2012. *But TypeScript only delivers half of the value in using a strongly typed language to Unix developers: strong typing. Intellisense, code completion and refactoring are tools that are only available to Visual Studio Professional users on Windows. There is no Eclipse, MonoDevelop or Emacs support for any of the language features*
13. ↑  „Microsoft TypeScript: Can the father of C# save us from the tyranny of JavaScript?". ZDNet. 1 October 2012. Посетено на 12 October 2012. *And I think this is a pretty big misstep. If you're building web apps that run on anything other than Windows, you're likely using a Mac and most likely not using Visual Studio. You need the Visual Studio plug-in to get the IntelliSense. All you get without Visual Studio is the strong-typing. You don't get the productivity benefits you get from IntelliSense.*.
14. ↑  „TypeScript-Unterstützung für Eclipse". *heise Developer*. 6 August 2013. Посетено на 26 April 2015.
15. ↑  „TypeScript". *Eclipse Marketplace*. Eclipse Foundation. Архивирано од изворникот на 2018-10-10. Посетено на 26 April 2015.
16. ↑  „TypeStrong: The only TypeScript package you will ever need". Посетено на 21 July 2016.
17. ↑  Hillar, Gastón (14 May 2013). „Working with TypeScript in Visual Studio 2012". *Dr. Dobb's Journal*. Архивирано од изворникот на 2018-09-29. Посетено на 26 April 2015.
18. ↑  „TypeScript 0.9 arrives with new compiler, support for generics". *The Register*. 18 June 2013. Посетено на 26 April 2015.
19. ↑  Hejlsberg, Anders (2 April 2014). „TypeScript". *Channel 9*. Microsoft. Посетено на 26 April 2015.
20. ↑  Jackson, Joab (25 February 2014). „Microsoft TypeScript graduates to Visual Studio". *PC World*. IDG. Посетено на 26 April 2015.
21. ↑  Turner, Jonathan (21 July 2014). „New Compiler and Moving to GitHub". *TypeScript Language team blog*. Microsoft. Архивирано од изворникот на 2015-10-27. Посетено на 26 April 2015.
22. ↑  „Announcing TypeScript 3.0". 30 July 2018. Посетено на 16 March 2020.
23. ↑  „TypeScript 3.0". 30 July 2018. Посетено на 16 March 2020.
24. ↑  „Announcing TypeScript 4.0". *TypeScript* (англиски). 2020-08-20. Посетено на 2020-10-30.
25. ↑  Anders Hejlsberg (5 October 2012). „What is TypeScript and why with Anders Hejlsberg". www.hanselminutes.com. Посетено на 15 January 2014.
26. ↑  S. Somasegar (1 October 2012). „TypeScript: JavaScript Development at Application Scale". msdn.com. Посетено на 27 November 2013.
27. ↑  optional static typing is called gradual typing
28. ↑  Klint Finley (1 October 2012). „Microsoft Previews New JavaScript-Like Programming Language TypeScript". TechCrunch. Посетено на 27 November 2013.
29. ↑  „Angular 2". *angular.io*. Посетено на 4 May 2016.
30. ↑  „Welcome to TypeScript". *typescriptlang.org*. Microsoft. Посетено на 26 April 2015.
31. ↑  Turner, Jonathan (18 June 2013). „Announcing TypeScript 0.9". *TypeScript Language team blog*. Microsoft. Архивирано од изворникот на 2013-11-26. Посетено на 2021-03-21.
32. ↑  „Generics in Typescript". Microsoft.
33. ↑  Sönke Sothmann (31 January 2014). „An introduction to TypeScript's module system". blog.oio.de. Архивирано од изворникот на 2014-02-01. Посетено на 21 February 2014.
34. ↑  Olivier Bloch (1 October 2012). „Sublime Text, Vi, Emacs: TypeScript enabled!". Microsoft. Посетено на 28 October 2012.
35. ↑  „TypeScript support in WebStorm 6". JetBrains.
36. ↑  „TypeScript support in ReSharper 8.1". JetBrains. 28 October 2013.
37. ↑  ReSharper: The Visual Studio Extension for .
38. ↑  „atom-typescript". *Atom* (англиски). Архивирано од изворникот на 2016-10-04. Посетено на 9 January 2020.
39. ↑  „TypeStrong/grunt-ts". *GitHub*. Посетено на 26 April 2015.
40. ↑  „ppedregal/typescript-maven-plugin". *GitHub*. Посетено на 26 April 2015.
41. ↑  „ivogabe/gulp-typescript". *GitHub*. Посетено на 14 July 2017.
42. ↑  „sothmann/typescript-gradle-plugin". *GitHub*. Посетено на 26 April 2015.
43. ↑  „TSLint".
44. ↑  Palantir (19 February 2019). „TSLint in 2019". *Medium*. Посетено на 24 April 2019.
45. ↑  „TSLint Deprecated to Focus Support on typescript-eslint". *InfoQ*. Посетено на 24 April 2019.