TypeScript
TypeScript | |
---|---|
Клас мовы | мультыпарадыгменная: функцыянальная, абагульненая, імператыўная, аб’ектна-арыентаваная |
З’явілася ў | 1 кастрычніка 2012 |
Аўтар(ы) | Microsoft |
Пашырэнне файлаў | ts, tsx |
Тыпізацыя даных | качыная, паслядоўная, структурная[1] |
Зведала ўплыў | JavaScript, C#, Java і CoffeeScript[d] |
Паўплывала на | AtScript, AssemblyScript |
Ліцэнзія | Apache Software License 2.0[d][2] |
Сайт | typescriptlang.org (англ.) |
TypeScript — гэта свабодная мова праграмавання высокага ўзроўню з адкрытым зыходным кодам. Яна распрацавана Microsoft. TypeScript дадае ў JavaScript статычную тыпізацыю з дадатковымі анатацыямі тыпаў. Яна прызначана для распрацоўкі вялікіх праграм і транспілюе зыходны код ў JavaScript[3]. Паколькі TypeScript з’яўляецца падмноствам JavaScript, усе праграмы на JavaScript сінтаксічна карэктныя для TypeScript, аднак у мэтах бяспекі яны могуць не праходзіць праверку тыпаў.
TypeScript можа выкарыстоўвацца для распрацоўкі JavaScript-праграм як для выканання на баку кліента, так і на баку сервера (як у Node.js ці Deno). Для транспіляцыі даступна некалькі варыянтаў. Можна выкарыстоўваць стандартны кампілятар TypeScript[4], або можна выклікаць кампілятар Babel.
TypeScript падтрымлівае файлы азначэнняў, якія могуць утрымліваць інфармацыю аб тыпах існых бібліятэк JavaScript, падобна таму як загалоўкавыя файлы C++ могуць апісваць структуру існых аб’ектных файлаў. Гэта дазваляе іншым праграмам выкарыстоўваць значэнні, апісаныя ў гэтых файлах так, як калі б яны былі статычна тыпізаванымі сутнасцямі TypeScript. Існуюць іншыя загалоўкавыя файлы для такіх папулярных бібліятэк, як jQuery, MongoDB і D3.js. Таксама даступныя загалоўкі TypeScript для модуляў бібліятэк Node.js, што дазваляе распрацоўваць праграмы на Node.js у рамках TypeScript[5].
Кампілятар TypeScript сам напісаны на мове TypeScript і скампіляваны ў JavaScript. Ён ліцэнзуецца ў адпаведнасці з ліцэнзіяй Apache 2.0. Андэрс Хэйлсберг, вядучы архітэктар C# і стваральнік Delphi і Turbo Pascal, удзельнічаў у распрацоўцы TypeScript[6][7][8][9].
Асаблівасці
[правіць | правіць зыходнік]TypeScript — гэта пашырэнне мовы, якое дадае магчымасці ў стандарт ECMAScript 6. Дадатковыя магчымасці ўключаюць:
- Анатацыі тыпу і праверка тыпу падчас кампіляцыі
- Вывад тыпу
- Сціранне тыпу
- Інтэрфейсы
- Пералічальныя тыпы
- Джэнерыкі
- Прастор імёнаў
- Картэжы
- Async/await
Наступныя функцыі перанесены з ECMAScript 2015:
- Класы
- Модулі[10]
- Скарочаны сінтаксіс «стрэлкі» для ананімных функцый
- Неабавязковыя параметры і параметры па змаўчанні
Сінтаксічна TypeScript вельмі падобны на JScript.NET, іншай рэалізацыі Microsoft стандарту ECMA-262, якая дадала падтрымку статычнага тыпу і класічных функцый аб’ектна-арыентаванай мовы, такіх як класы, спадчыннасць, інтэрфейсы і прастор імёнаў.
Сумяшчальнасць з JavaScript
[правіць | правіць зыходнік]TypeScript з’яўляецца строгім супермноствам ECMAScript 2015, які сам з’яўляецца супермноствам ECMAScript 5, звычайна званага JavaScript[11]. Такім чынам, праграма на JavaScript таксама з’яўляецца карэктнай праграмай на TypeScript, а праграма на TypeScript можа без праблем выкарыстоўваць JavaScript. Па змаўчанні кампілятар арыентаваны на ECMAScript 5, які зараз з’яўляецца пераважным стандартам, але таксама здольны генераваць канструкцыі, якія выкарыстоўваюцца ў ECMAScript 3 ці 2015.
З дапамогай TypeScript можна выкарыстоўваць існуючы код JavaScript, уключаць у яго папулярныя бібліятэкі JavaScript і выклікаць код, згенераваны на TypeScript, з іншых бібліятэк JavaScript[12]. Дэкларацыі тыпаў для гэтых бібліятэк прадастаўляюцца разам з зыходным кодам.
Анатацыі тыпаў
[правіць | правіць зыходнік]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 падтрымлівае абагульненае праграмаванне[13]. Ніжэй прыведзены прыклад выкарыстання функцыі Identity[14].
function id<T>(x: T): T {
return x;
}
Зноскі
- ↑ Type Compatibility (англ.). TypeScript. Праверана 9 кастрычніка 2023.
- ↑ The typescript Open Source Project on Open Hub: Licenses Page — 2006. Праверана 18 ліпеня 2018.
- ↑ Bright. Microsoft TypeScript: the JavaScript we need, or a solution looking for a problem? . Ars Technica. Condé Nast (3 кастрычніка 2012). Праверана 26 April 2015.
- ↑ TypeScript Programming with Visual Studio Code (англ.). code.visualstudio.com. Праверана 12 February 2019.
- ↑ borisyankov/DefinitelyTyped . GitHub. Праверана 26 April 2015.
- ↑ Foley. Microsoft takes the wraps off TypeScript, a superset of JavaScript . ZDNet. CBS Interactive (1 кастрычніка 2012). Праверана 26 April 2015.
- ↑ Somasegar. Somasegar's blog . Microsoft (1 кастрычніка 2012). Праверана 26 April 2015.
- ↑ Baxter-Reynolds. Microsoft TypeScript: Can the father of C# save us from the tyranny of JavaScript? . ZDNet (1 кастрычніка 2012). Праверана 26 April 2015.
- ↑ Jackson. Microsoft Augments Javascript for Large-scale Development(недаступная спасылка). CIO. IDG Enterprise (1 кастрычніка 2012). Архівавана з першакрыніцы 17 December 2013. Праверана 26 April 2015.
- ↑ Klint Finley. Microsoft Previews New JavaScript-Like Programming Language TypeScript . TechCrunch (1 кастрычніка 2012). Праверана 27 November 2013.
- ↑ Angular 2 . angular.io. Праверана 4 May 2016.
- ↑ Welcome to TypeScript . typescriptlang.org. Microsoft. Праверана 26 April 2015.
- ↑ Turner. Announcing TypeScript 0.9 . TypeScript Language team blog. Microsoft (18 чэрвеня 2013).
- ↑ Generics in Typescript . Microsoft.