Maskinskriven

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 30 april 2022; kontroller kräver 8 redigeringar .
maskinskriven
Språkklass

multiparadigm : objektorienterad , generisk , funktionell , imperativ , aspektorienterad , händelseorienterad ,

prototyp programmering
Utförandetyp kompilering till JavaScript
Framträdde i 1 oktober 2012
Författare Microsoft
Utvecklaren Microsoft
Filtillägg _ .tseller.tsx
Släpp 4.7.4 [1]  ( 17 juni 2022 )
Blivit påverkad JavaScript , C# , Java och CoffeeScript
Licens Apache License 2.0 [2]
Hemsida typescriptlang.org
 Mediafiler på Wikimedia Commons

TypeScript  är ett programmeringsspråk som introducerades av Microsoft 2012 och positionerat som ett webbapplikationsutvecklingsverktyg som utökar funktionerna för JavaScript [3] [4] [5] [6] [7] [8] .

Utvecklare av TypeScript-språket är Anders Hejlsberg som tidigare skapat Turbo Pascal , Delphi och C# .

Språkspecifikationerna är öppna och publicerade under Open Web Foundation Specification Agreement (OWFa 1.0) [9] .

TypeScript är bakåtkompatibelt med JavaScript och kompilerar till det senare. När ett TypeScript-program väl har kompilerats kan det faktiskt köras i vilken modern webbläsare som helst eller användas tillsammans med serverplattformen Node.js . Koden för den experimentella kompilatorn som översätter TypeScript till JavaScript distribueras under Apache-licensen . Dess utveckling utförs i ett offentligt arkiv genom GitHub -tjänsten [10] .

TypeScript skiljer sig från JavaScript i sin förmåga att explicit tilldela statiska typer, stöd för användning av fullfjädrade klasser (som i traditionella objektorienterade språk) och stöd för att plugga in moduler, vilket är utformat för att öka utvecklingshastigheten, underlätta läsbarheten, refactor och återanvända kod, och hjälpa till att hitta fel i utvecklings- och kompileringsstadiet, och eventuellt påskynda exekveringen av program.

Det är planerat att, på grund av full bakåtkompatibilitet, anpassning av befintliga applikationer till ett nytt programmeringsspråk kan ske stegvis, genom att gradvis definiera typer.

Vid tidpunkten för utgivningen finns det filer för att förstå utökad TypeScript-syntax för Vim och Emacs , samt ett plugin-program för Microsoft Visual Studio .

Samtidigt med lanseringen av specifikationen förberedde utvecklarna filer med statiska typdeklarationer för några populära JavaScript-bibliotek , inklusive jQuery .

Hjälp

TypeScript uppstod ur upplevda brister i JavaScript i storskaliga applikationer, både hos Microsoft och andra JavaScript-användare [11] . Problem med utvecklingen av komplexa program i JavaScript ledde till behovet av att underlätta utvecklingen av språkkomponenter [4] .

TypeScript-utvecklarna letade efter en lösning som inte skulle bryta kompatibiliteten med standarden och dess plattformsoberoende stöd. Genom att veta att endast ECMAScript-standarden erbjuder framtida stöd för klassbaserad programmering byggdes TypeScript på det antagandet. Detta ledde till skapandet av en JavaScript-kompilator med en uppsättning syntaktiska språktillägg utökade med ett förslag som omvandlar tillägg till JavaScript. I denna mening är TypeScript en representation av vad man kan förvänta sig av ECMAScript 6. Den unika aspekten finns inte i förslaget, utan i tillägget av statisk typning till TypeScript , vilket gör att språket kan analyseras statiskt, vilket underlättar verktygshantering och IDE-stöd.

Stöd för ECMAScript 6

TypeScript lägger till stöd för följande konstruktioner från ECMAScript 6-standarden: klasser, moduler och pilfunktionssyntax.

Kodexempel

Pseudo -slumplös lösenordsgenerator som använder " crypto "-modulen inbyggd i Node.js :

importera * som krypto från "krypto" ; funktion generera ( längd : nummer = 16 ) : string { const versaler : string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ; const gemener : string = "abcdefghijklmnopqrstuvwxyz" ; const numbers : string = "0123456789" ; const symbols : string = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" ; const all : string = versaler + gemener + siffror + symboler ; låt lösenord : string = "" ; för ( låt index : nummer = 0 ; index < längd ; index ++ ) { const randomNumber : nummer = krypto . randomInt ( all . längd ); lösenord += all . charAt ( randomNumber ); } returnera lösenord ; }

Funktioner i språket

TypeScript är en förlängning av ECMAScript 5-specifikationen. Följande alternativ har lagts till:

Syntaktisk är TypeScript väldigt lik JScript .NET , Microsofts senaste implementering av ECMA-262-lokalen, som ger stöd för statisk typning och klassiska objektorienterade språkfunktioner som klasser, arv, gränssnitt och namnutrymmen.

JavaScript-kompatibilitet

TypeScript är bakåtkompatibelt med JavaScript. Således är alla JavaScript-koder också korrekta för TypeScript. I TypeScript kan du använda befintlig JS-kod och inkludera populära JavaScript-bibliotek [13] . Typdeklarationerna för dessa bibliotek följer ofta med, eller så kan de skrivas för hand.

Som standard kompilerar TypeScript till ES3-kompatibelt JavaScript [13] som den rådande standarden. Du kan använda alternativet --target, eller dess förkortningsversion, -t, för att ange vilken version av JavaScript-standarden som TypeScript-koden ska kompilera till. Denna parameter kan ha följande värden: ES3 (standard), ES5, ES6 / ES2015, ES7 / ES2016, ES2017, ES2018, ES2019, ES2020 eller ESNext:

tsc- appen . ts - t ES5

Typdeklarationer

TypeScript tillhandahåller typdeklarationer för att statiskt kontrollera deras överensstämmelse . Detta är valfritt och kan ignoreras för att använda vanlig JavaScript- dynamisk typning .

funktion addera ( vänster : nummer , höger : nummer ) : nummer { retur vänster + höger ; }

Det finns flera kommentarer för primitiva typer: number, booleanoch string. Svagt eller dynamiskt införda strukturer är av typ any.

Typdefinitioner kan exporteras till en separat deklarationsfil för att göra typinformation tillgänglig för TypeScript-skript med de olika typer som redan kompilerats till JavaScript. Definitioner kan deklareras till ett befintligt JavaScript-bibliotek, som gjordes för Node.js och jQuery .

TypeScript-kompilatorn försöker härleda typer när de inte är explicit specificerade. Till exempel skulle metoden addi koden ovan matas ut som retur till numberäven om det inte fanns någon typ retur i definitionen. Detta är baserat på statiska typer leftoch right numberskompilatorns kunskap om att resultatet av att lägga till två numbersalltid är number. Genom att specificera returtypen kan kompilatorn dock kontrollera om den är korrekt.

Om typen inte kan härledas på grund av att deklarationer saknas, kommer den som standard till en dynamisk typ any. En värdetyp anystöder samma operationer som ett värde i JavaScript och minimal statisk typkontroll utförs för operationen på any[14] .

Deklarationsfiler

När ett TypeScript-skript kompileras finns det ett alternativ att skapa en deklarationsfil (med tillägg .d.ts) som används som ett gränssnitt till komponenterna i det kompilerade JavaScriptet. I processen tar kompilatorn bort alla funktioner och metodkroppar och behåller endast typsignaturerna som exporteras. Den resulterande deklarationsfilen kan användas för att beskriva TypeScript-exporterade virtuella typer av ett JavaScript-bibliotek eller -modul när en tredje part använder dem i TypeScript.

Konceptet med deklarationsfiler liknar det för header-filer i C++ :

deklarera modul aritmetik { add ( vänster : nummer , höger : nummer ) : nummer ; subtrahera ( vänster : tal , höger : tal ) : tal ; multiplicera ( vänster : tal , höger : tal ) : tal ; dividera ( vänster : tal , höger : tal ) : antal ; }

Manifestfiler kan skrivas för hand för befintliga JavaScript-bibliotek såväl som för jQuery och Node.js.

Klasser

TypeScript stöder ECMAScript 6-klasser, vilket låter dig stödja typdeklarationsalternativet.

klass Person { konstruktor ( privat skrivskyddat namn : sträng , privat skrivskyddat ålder : nummer , privat skrivskyddat lön : nummer ) {} public toString () : string { return `Name: ${ this . namn } \nÅlder: ${ detta . ålder } \nLön: ${ detta . lön } ` ; } }

Mallar

TypeScript stöder generisk programmering [15] .

Moduler

Med hjälp av moduler stöder TypeScript inkapsling av klasser, gränssnitt, funktioner och variabler i namnutrymmen. TypeScript skiljer mellan interna och externa moduler. Interna moduler är baserade på modulsyntaxen från ECMAScript 6, medan externa moduler använder ett JavaScript-bibliotek ( AMD eller CommonJS ) [16] .

Utvecklarverktyg

Kompilator

TypeScript-kompilatorn kallas tsc - den är skriven på TypeScript-språket, kan kompileras till standard JavaScript och sedan köras på vilken JavaScript-motor som helst (till exempel i en webbläsare). Kompilatorn kommer med en skriptserver som kan köra kompilatorn. Det är också tillgängligt som ett paket för node.jsvilket det används node.jssom en server.

Det finns också en alfaversion av en JavaScript-kompilator på klientsidan som kör TypeScript i farten när sidan laddas.

Den nuvarande versionen av kompilatorn använder ECMAScript version 5 som standard. Men det är möjligt att använda ECMAScript 2015 också för att få tillgång till de unika språkfunktionerna i denna version, såsom generatorer. Andra klasser än de som uttryckligen beskrivs i ECMAScript 2015-standarden är tillgängliga i båda versionerna.

IDE och redaktörsstöd

Det finns en plugin från Microsoft för Visual Studio 2012 och WebMatrix, och Visual Studio 2013, Visual Studio 2015 har fullt stöd på IDE-nivå. Stöds även i Visual Studio Code . JetBrains stöder TypeScript, inklusive kompilering, refactoring och felsökning i IntelliJ-plattforms-IDE som PhpStorm 6, WebStorm 6 och IntelliJ IDEA, samt deras Visual Studio ReSharper 8.1-tillägg. Stöds i Codeanywhere- miljön . Det finns plugins för NetBeans och Eclipse för att stödja språket.

Bland onlinemiljöer stöds språket i Cloud9 , Codenvy , CodePen .

Det finns grundläggande språkstöd i textredigerare Sublime Text, Emacs och Vim. Atom - redigeraren har en plugin för TypeScript med stöd för autokomplettering, kodnavigering, formatering och snabb kompilering.

Anteckningar

  1. TypeScript 4.7.4 .
  2. Typskriptet Open Source Project on Open Hub: Licenses Page - 2006.
  3. Microsoft tar bort omsluten av TypeScript, en superset av JavaScript . Hämtad 2 oktober 2012. Arkiverad från originalet 13 november 2014.
  4. 1 2 S. Somasegar. TypeScript: JavaScript Development at Application Scale  (engelska)  (död länk) (1 oktober 2012). Hämtad 1 november 2020. Arkiverad från originalet 3 mars 2016.
  5. Microsoft TypeScript: Kan C#s fader rädda oss från JavaScripts tyranni? . Hämtad 2 oktober 2012. Arkiverad från originalet 3 augusti 2014.
  6. Microsoft utökar Javascript för storskalig utveckling (nedlänk) . Hämtad 2 oktober 2012. Arkiverad från originalet 17 december 2013. 
  7. Microsoft tillkännager nytt TypeScript-webbprogrammeringsspråk (länk ej tillgänglig) . Hämtad 2 oktober 2012. Arkiverad från originalet 31 maj 2017. 
  8. Microsoft introducerar TypeScript, ett nytt alternativ med öppen källkod till JavaScript . Hämtad 2 oktober 2012. Arkiverad från originalet 4 oktober 2012.
  9. Open Web Foundation Final Specification Agreement (OWFa 1.0) . Hämtad 2 oktober 2012. Arkiverad från originalet 10 oktober 2020.
  10. TypeScript-projektGitHub
  11. Anders Hejlsberg. Vad är TypeScript och varför med Anders Hejlsberg . www.hanselminutes.com (5 oktober 2012). Hämtad 15 januari 2014. Arkiverad från originalet 27 december 2018.
  12. Klint Finley. Microsoft förhandsgranskar nytt JavaScript-liknande programmeringsspråk TypeScript . TechCrunch (1 oktober 2012). Hämtad 27 november 2013. Arkiverad från originalet 13 november 2012.
  13. 1 2 Official TypeScript-hemsida . Hämtad 2 oktober 2012. Arkiverad från originalet 10 mars 2018.
  14. TypeScript Language Specification s.24 Arkiverad 17 november 2013.
  15. Jonathan Turner. Tillkännager TypeScript 0.9 . msdn.com (18 juni 2013). Hämtad 27 november 2013. Arkiverad från originalet 26 november 2013.
  16. Sonke Sothmann. En introduktion till TypeScripts modulsystem . blog.oio.de (31 januari 2014). Hämtad 21 februari 2014. Arkiverad från originalet 1 februari 2014.

Litteratur

  • Steve Fenton. Pro TypeScript: Application-Scale JavaScript-utveckling. - Apress, 2014. - ISBN 978-1-4302-6791-1 .
  • Dan Maharry. TypeScript avslöjat . - Apress, 2013. - ISBN 9781430257257 .

Länkar