Maskinskrift

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 30. april 2022; checks kræver 8 redigeringer .
maskinskrift
Sprog klasse

multi- paradigme : objektorienteret , generisk , funktionel , imperativ , aspektorienteret , begivenhedsorienteret ,

prototype programmering
Udførelsestype kompilering til JavaScript
Dukkede op i 1. oktober 2012
Forfatter Microsoft
Udvikler Microsoft
Filtypenavn _ .tseller.tsx
Frigøre 4.7.4 [1]  ( 17. juni 2022 )
Blev påvirket JavaScript , C# , Java og CoffeeScript
Licens Apache-licens 2.0 [2]
Internet side typescriptlang.org
 Mediefiler på Wikimedia Commons

TypeScript  er et programmeringssprog introduceret af Microsoft i 2012 og positioneret som et webapplikationsudviklingsværktøj , der udvider funktionerne i JavaScript [3] [4] [5] [6] [7] [8] .

Udvikleren af ​​TypeScript-sproget er Anders Hejlsberg , som tidligere har skabt Turbo Pascal , Delphi og C# .

Sprogspecifikationerne er åbne og offentliggjort under Open Web Foundation Specification Agreement (OWFa 1.0) [9] .

TypeScript er bagudkompatibel med JavaScript og kompilerer til sidstnævnte. Faktisk, når det først er kompileret, kan et TypeScript-program køres i enhver moderne browser eller bruges sammen med Node.js -serverplatformen . Koden til den eksperimentelle compiler, der oversætter TypeScript til JavaScript, distribueres under Apache-licensen . Dets udvikling udføres i et offentligt lager gennem GitHub -tjenesten [10] .

TypeScript adskiller sig fra JavaScript i dets evne til eksplicit at tildele statiske typer, understøttelse af brugen af ​​fuldgyldige klasser (som i traditionelle objektorienterede sprog) og understøttelse af tilslutning af moduler, som er designet til at øge udviklingshastigheden, lette læsbarheden, refactor og genbruge kode, og hjælpe med at finde fejl i udviklings- og kompileringsstadiet, og eventuelt fremskynde eksekveringen af ​​programmer.

Det er planlagt, at tilpasningen af ​​eksisterende applikationer til et nyt programmeringssprog på grund af fuld bagudkompatibilitet kan ske i etaper ved gradvist at definere typer.

På udgivelsestidspunktet er der filer til forståelse af udvidet TypeScript-syntaks til Vim og Emacs samt et plug-in til Microsoft Visual Studio .

Samtidig med udgivelsen af ​​specifikationen forberedte udviklerne filer med statiske typedeklarationer for nogle populære JavaScript-biblioteker , inklusive jQuery .

Hjælp

TypeScript opstod ud fra opfattede fejl i JavaScript i store applikationer, både hos Microsoft og andre JavaScript-brugere [11] . Problemer med udviklingen af ​​komplekse programmer i JavaScript førte til behovet for at lette udviklingen af ​​sprogkomponenter [4] .

TypeScript-udviklerne ledte efter en løsning, der ikke ville bryde kompatibiliteten med standarden og dens cross-platform support. Velvidende, at kun ECMAScript-standarden tilbyder fremtidig understøttelse af klassebaseret programmering , blev TypeScript bygget på denne antagelse. Dette førte til oprettelsen af ​​en JavaScript-compiler med et sæt syntaktiske sprogudvidelser forstærket af et forslag, der transformerer udvidelser til JavaScript. I denne forstand er TypeScript en repræsentation af, hvad man kan forvente af ECMAScript 6. Det unikke aspekt er ikke i forslaget, men i tilføjelsen af ​​statisk skrivning til TypeScript , som gør det muligt at analysere sproget statisk, hvilket letter værktøj og IDE-understøttelse.

ECMAScript 6-understøttelse

TypeScript tilføjer understøttelse af følgende konstruktioner fra ECMAScript 6-standarden: klasser, moduler og pilefunktionssyntaks.

Kodeeksempler

Pseudo-tilfældig adgangskodegenerator ved hjælp af "crypto"-modulet indbygget i Node.js :

import * som krypto fra "krypto" ; funktion generere ( længde : tal = 16 ) : string { const store bogstaver : string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ; const små bogstaver : string = "abcdefghijklmnopqrstuvwxyz" ; const numre : string = "0123456789" ; const symbols : string = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" ; const all : string = store bogstaver + små bogstaver + tal + symboler ; lad adgangskode : string = "" ; for ( lad indeks : tal = 0 ; indeks < længde ; indeks ++ ) { const randomNumber : tal = krypto . randomInt ( all . length ); password += all . charAt ( randomNumber ); } returner adgangskode ; }

Funktioner af sproget

TypeScript er en udvidelse af ECMAScript 5-specifikationen. Følgende muligheder er tilføjet:

Syntaktisk minder TypeScript meget om JScript .NET , Microsofts seneste implementering af ECMA-262-lokaliteten, som giver understøttelse af statisk skrivning og klassiske objektorienterede sprogfunktioner såsom klasser, arv, grænseflader og navnerum.

JavaScript-kompatibilitet

TypeScript er bagudkompatibel med JavaScript. Enhver JavaScript-kode er således også korrekt for TypeScript. I TypeScript kan du bruge eksisterende JS-kode og inkludere populære JavaScript-biblioteker [13] . Typeerklæringerne for disse biblioteker følger ofte med, eller de kan skrives i hånden.

Som standard kompilerer TypeScript til ES3-kompatibelt JavaScript [13] som den gældende standard. Du kan bruge --target-indstillingen, eller dens stenografiske version, -t, til at angive den version af JavaScript-standarden, som TypeScript-koden vil kompilere til. Denne parameter kan have følgende værdier: ES3 (standard), ES5, ES6 / ES2015, ES7 / ES2016, ES2017, ES2018, ES2019, ES2020 eller ESNext:

tsc app . ts - t ES5

Typedeklarationer

TypeScript leverer typeerklæringer for statisk at kontrollere deres konsistens . Dette er valgfrit og kan ignoreres for at bruge almindelig JavaScript - dynamisk indtastning .

funktion add ( venstre : tal , højre : tal ) : tal { retur venstre + højre ; }

Der er flere annotationer til primitive typer: number, booleanog string. Svagt eller dynamisk indførte strukturer er af typen any.

Typedefinitioner kan eksporteres til en separat erklæringsfil for at gøre typeinformation tilgængelig for TypeScript-scripts ved hjælp af de forskellige typer, der allerede er kompileret i JavaScript. Definitioner kan erklæres til et eksisterende JavaScript-bibliotek, som det blev gjort for Node.js og jQuery .

TypeScript-kompileren forsøger at udlede typer, når de ikke er eksplicit specificeret. For eksempel ville metoden addi koden ovenfor udsendes som retur til number, selvom der ikke var angivet nogen type retur i definitionen. Dette er baseret på statiske typer leftog right numberscompilerens viden om, at resultatet af at tilføje to numbersaltid er number. Angivelse af returtypen gør det dog muligt for compileren at kontrollere korrektheden.

Hvis typen ikke kan udledes på grund af manglende erklæringer, vil den som standard være en dynamisk type any. En værditype anyunderstøtter de samme operationer som en værdi i JavaScript, og der udføres minimal statisk typekontrol for operationen på any[14] .

Erklæringsfiler

Når et TypeScript-script er kompileret, er der mulighed for at oprette en erklæringsfil (med endelsen .d.ts), der bruges som en grænseflade til komponenterne i det kompilerede JavaScript. I processen fjerner compileren alle funktioner og metodelegemer og beholder kun de typesignaturer, der eksporteres. Den resulterende erklæringsfil kan bruges til at beskrive TypeScript-eksporterede virtuelle typer af et JavaScript-bibliotek eller -modul, når en tredjepart bruger dem i TypeScript.

Konceptet med deklarationsfiler ligner det for header-filer i C++ :

erklære modul aritmetik { tilføje ( venstre : tal , højre : tal ) : tal ; subtrahere ( venstre : tal , højre : tal ) : tal ; gange ( venstre : tal , højre : tal ) : tal ; dividere ( venstre : tal , højre : tal ) : tal ; }

Manifestfiler kan skrives i hånden til eksisterende JavaScript-biblioteker såvel som til jQuery og Node.js.

Klasser

TypeScript understøtter ECMAScript 6-klasser, som giver dig mulighed for at understøtte typedeklarationsindstillingen.

klasse Person { constructor ( privat skrivebeskyttet navn : streng , privat skrivebeskyttet alder : nummer , privat skrivebeskyttet løn : nummer ) {} public toString () : string { return `Name: ${ this . navn } \nAlder: ${ denne . alder } \nLøn: ${ denne . løn } ` ; } }

Skabeloner

TypeScript understøtter generisk programmering [15] .

Moduler

Ved hjælp af moduler understøtter TypeScript indkapsling af klasser, grænseflader, funktioner og variabler i navnerum. TypeScript skelner mellem interne og eksterne moduler. Interne moduler er baseret på modulsyntaksen fra ECMAScript 6, mens eksterne moduler bruger et JavaScript-bibliotek ( AMD eller CommonJS ) [16] .

Udviklerværktøjer

Compiler

TypeScript-kompileren kaldes tsc - den er skrevet i TypeScript-sproget, kan kompileres til standard JavaScript og derefter køre på en hvilken som helst JavaScript-motor (for eksempel i en browser). Compileren kommer med en scriptserver, der kan køre compileren. Den er også tilgængelig som en pakke, node.jssom den bruger node.jssom server.

Der er også en alfa-version af en JavaScript-compiler på klientsiden, der udfører TypeScript på farten, mens siden indlæses.

Den nuværende version af compileren bruger som standard ECMAScript version 5. Men det er også muligt at bruge ECMAScript 2015 for at få adgang til de unikke sprogfunktioner i denne version, såsom generatorer. Andre klasser end dem, der udtrykkeligt er beskrevet i ECMAScript 2015-standarden, er tilgængelige i begge versioner.

IDE og editor support

Der er et plug-in fra Microsoft til Visual Studio 2012 og WebMatrix, og Visual Studio 2013, Visual Studio 2015 har fuld understøttelse på IDE-niveau. Understøttes også i Visual Studio Code . JetBrains understøtter TypeScript, inklusive kompilering, refactoring og fejlretning i IntelliJ platform IDE'er såsom PhpStorm 6, WebStorm 6 og IntelliJ IDEA, samt deres Visual Studio ReSharper 8.1 udvidelse. Understøttet i Codeanywhere- miljøet . Der er plugins til NetBeans og Eclipse til at understøtte sproget.

Blandt online-miljøer er sproget understøttet i Cloud9 , Codenvy , CodePen .

Der er grundlæggende sprogunderstøttelse i teksteditorerne Sublime Text, Emacs og Vim. Atom - editoren har et plugin til TypeScript med understøttelse af autofuldførelse, kodenavigation, formatering og hurtig kompilering.

Noter

  1. TypeScript 4.7.4 .
  2. Typescriptet Open Source Project on Open Hub: Licenser side - 2006.
  3. Microsoft fjerner omslutningen af ​​TypeScript, et supersæt af JavaScript . Hentet 2. oktober 2012. Arkiveret fra originalen 13. november 2014.
  4. 1 2 S. Somasegar. TypeScript: JavaScript Development at Application Scale  (engelsk)  (dødt link) (1. oktober 2012). Hentet 1. november 2020. Arkiveret fra originalen 3. marts 2016.
  5. Microsoft TypeScript: Kan faderen til C# redde os fra JavaScripts tyranni? . Hentet 2. oktober 2012. Arkiveret fra originalen 3. august 2014.
  6. Microsoft udvider Javascript til udvikling i stor skala (downlink) . Hentet 2. oktober 2012. Arkiveret fra originalen 17. december 2013. 
  7. Microsoft annoncerer nyt TypeScript-webprogrammeringssprog (link ikke tilgængeligt) . Hentet 2. oktober 2012. Arkiveret fra originalen 31. maj 2017. 
  8. Microsoft introducerer TypeScript, et nyt Open Source-alternativ til JavaScript . Hentet 2. oktober 2012. Arkiveret fra originalen 4. oktober 2012.
  9. Open Web Foundation Final Specification Agreement (OWFa 1.0) . Hentet 2. oktober 2012. Arkiveret fra originalen 10. oktober 2020.
  10. TypeScript-projektGitHub
  11. Anders Hejlsberg. Hvad er TypeScript og hvorfor med Anders Hejlsberg . www.hanselminutes.com (5. oktober 2012). Hentet 15. januar 2014. Arkiveret fra originalen 27. december 2018.
  12. Klint Finley. Microsoft viser nyt JavaScript-lignende programmeringssprog TypeScript . TechCrunch (1. oktober 2012). Hentet 27. november 2013. Arkiveret fra originalen 13. november 2012.
  13. 1 2 Officiel TypeScript-hjemmeside . Hentet 2. oktober 2012. Arkiveret fra originalen 10. marts 2018.
  14. TypeScript-sprogspecifikation s.24 Arkiveret 17. november 2013.
  15. Jonathan Turner. Annoncering af TypeScript 0.9 . msdn.com (18. juni 2013). Hentet 27. november 2013. Arkiveret fra originalen 26. november 2013.
  16. Sonke Sothmann. En introduktion til TypeScripts modulsystem . blog.oio.de (31. januar 2014). Hentet 21. februar 2014. Arkiveret fra originalen 1. februar 2014.

Litteratur

  • Steve Fenton. Pro TypeScript: JavaScript-udvikling i applikationsskala. - Apress, 2014. - ISBN 978-1-4302-6791-1 .
  • Dan Maharry. TypeScript afsløret . - Apress, 2013. - ISBN 9781430257257 .

Links