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 .
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.
TypeScript lägger till stöd för följande konstruktioner från ECMAScript 6-standarden: klasser, moduler och pilfunktionssyntax.
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 ; }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.
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 ES5TypeScript 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] .
DeklarationsfilerNä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.
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 } ` ; } }TypeScript stöder generisk programmering [15] .
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] .
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.
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.
![]() | |
---|---|
I bibliografiska kataloger |
JavaScript | |
---|---|
Idéer | |
Kompilatorer | |
Motorer | |
Bibliotek och ramar | |
Redaktörer | |
Verktyg |
|
Relaterade tekniker | |
människor | |
Kategori |
Node.js | ||
---|---|---|
Plattform | ||
Ramar | ||
språk | ||
värdar |
|
Gratis och öppen källkod från Microsoft | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
allmän information |
| ||||||||||||
Programvara _ |
| ||||||||||||
Licenser | |||||||||||||
Relaterade ämnen |
| ||||||||||||
Kategori |