# ТајпСкрипт

**ТајпСкрипт** е програмски јазик развиен и одржуван од 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` .

## Наводи