Programmering

Hvad er TypeScript? Stærkt skrevet JavaScript

Hvad er TypeScript? TypeScript defineret

TypeScript er en variation af det populære JavaScript-programmeringssprog, der tilføjer nogle nøglefunktioner, der er vigtige for virksomhedsudvikling. Især TypeScript er stærkt skrevet - det vil sige, at variabler og andre datastrukturer kan erklæres for at være af en bestemt type, som en streng eller en boolsk, af programmøren, og TypeScript vil kontrollere gyldigheden af ​​deres værdier. Dette er ikke muligt i JavaScript, hvilket er løst skrevet.

TypeScript's stærke skrivning muliggør en række funktioner, der hjælper med at gøre udviklere mere effektive, især når de beskæftiger sig med store kodebaser i virksomhedsskala. TypeScript er kompileret snarere end fortolket som JavaScript, hvilket betyder, at fejl kan fanges inden udførelse; IDE'er, der udfører inkrementel kompilering i baggrunden, kan få øje på sådanne fejl under kodningsprocessen.

På trods af denne nøgleforskel i forhold til JavaScript kan TypeScript stadig udføres hvor som helst JavaScript kan køre. Det skyldes, at TypeScript ikke kompilerer til en binær eksekverbar, men til standard JavaScript. Lad os dykke ind for at finde ud af mere.

TypeScript vs. JavaScript 

TypeScript er en superset af JavaScript. Mens enhver korrekt JavaScript-kode også er korrekt TypeScript-kode, har TypeScript også sprogfunktioner, der ikke er en del af JavaScript. Den mest fremtrædende funktion, der er unik for TypeScript - den, der gav TypeScript sit navn - er som nævnt stærk skrivning: en TypeScript-variabel er knyttet til en type, som en streng, tal eller boolsk, der fortæller kompilatoren, hvilken slags data den kan indeholde. Derudover understøtter TypeScript inferens af typen og inkluderer en catch-all-type, hvilket betyder, at variabler ikke behøver at få deres typer eksplicit tildelt af programmøren; mere om det om et øjeblik.

TypeScript er også designet til objektorienteret programmering - JavaScript, ikke så meget. Begreber som arv og adgangskontrol, der ikke er intuitive i JavaScript, er enkle at implementere i TypeScript. Derudover giver TypeScript dig mulighed for at implementere grænseflader, et stort set meningsløst koncept i JavaScript-verdenen.

Når det er sagt, er der ingen funktionalitet, du kan kode i TypeScript, som du ikke også kan kode i JavaScript. Det skyldes, at TypeScript ikke er kompileret i konventionel forstand - den måde, for eksempel, C ++ er kompileret i en binær eksekverbar, der kan køre på specificeret hardware. I stedet TypeScript-kompilatoren transkoder TypeScript-kode til funktionelt ækvivalent JavaScript. Denne artikel fra Sean Maxwell på GitConnected har nogle gode eksempler på objektorienterede TypeScript-kodestykker og deres JavaScript-ækvivalenter. Det resulterende JavaScript kan derefter køres hvor som helst, hvilken som helst JavaScript-kode kan køre, fra en webbrowser til en server udstyret med Node.js.

Så hvis TypeScript i sidste ende bare er en smuk måde at generere JavaScript-kode på, hvorfor gider du det? For at besvare dette spørgsmål skal vi se på, hvor TypeScript kom fra, og hvad det bruges til.

Hvad bruges TypeScript til?

TypeScript blev frigivet som open source i 2012 efter at være udviklet inden for Microsoft. (Softwaregiganten forbliver projektets steward og hovedudvikler.) Denne ZDNet-artikel fra den tid giver et spændende kig på, hvorfor det skete: ”Det viser sig, at en af ​​de store motiver var erfaringen fra andre teams hos Microsoft, der forsøgte at udvikle sig og vedligeholde Microsoft-produkter i JavaScript. ”

På det tidspunkt forsøgte Microsoft at opskalere Bing Maps som en konkurrent til Google Maps samt at tilbyde webversioner af sin Office-pakke - og JavaScript var det primære udviklingssprog for opgaverne. Men udviklerne fandt det i det væsentlige vanskeligt at skrive apps på skalaen af ​​Microsofts flagskibstilbud ved hjælp af JavaScript. Så de udviklede TypeScript for at gøre det lettere at opbygge applikationer på virksomhedsniveau til at køre i JavaScript-miljøer. Dette er ånden bag tagline for sproget på det officielle TypeScript-projektwebsted: "JavaScript, der skaleres."

Hvorfor er TypeScript bedre til denne type arbejde end vanilje JavaScript? Nå, vi kan diskutere for evigt om fordelene ved objektorienteret programmering, men virkeligheden er, at mange softwareudviklere, der arbejder med store virksomhedsprojekter, er vant til det, og det hjælper med genbrug af kode som projekter i ballonstørrelse. Du bør heller ikke overse, i hvilket omfang værktøj kan øge udviklerens produktivitet. Som nævnt understøtter de fleste virksomheds-IDE'er inkrementel kompilering i baggrunden, som kan se fejl, mens du arbejder. (Så længe din kode er syntaktisk korrekt, transponderes den stadig, men det resulterende JavaScript fungerer muligvis ikke korrekt. Tænk på fejlkontrollen som svaret til stavekontrol.) Disse IDE'er kan også hjælpe dig med at omlægge kode, når du kommer dybt ind i din projekt.

Kort sagt bruges TypeScript, når du vil have virksomhedsfunktioner og værktøjer på et sprog som Java, men du har brug for din kode til at udføre i et JavaScript-miljø. I teorien kunne du skrive det standard JavaScript, som TypeScript-kompilatoren genererer selv, men det ville tage dig meget længere tid, og kodebasen ville være vanskeligere for et stort team at forstå og debugge kollektivt.

Åh, og TypeScript har endnu et pænt trick på ærmet: Du kan indstille compileren til at målrette mod et specifikt JavaScript-runtime-miljø, browser eller endda sprogversion. Da enhver velformet JavaScript-kode også er TypeScript-kode, kan du for eksempel tage kode skrevet til ECMAScript 2015-specifikationen, som indeholdt et antal nye syntaktiske funktioner og kompilere den til JavaScript-kode, der ville være i overensstemmelse med ældre versioner af sproget.

Installer TypeScript

Klar til at begynde at spille med TypeScript? Installation af sproget er let. Hvis du allerede bruger Node.js på din udviklingsmaskine, kan du bruge NPM, Node.js pakkehåndtering, til at installere det. Den officielle TypeScript-vejledning på 5 minutter fører dig gennem processen.

TypeScript kan også installeres som et plug-in til din valgte IDE, hvilket giver dig de værktøjsfordele, vi talte om ovenfor, og tager sig også af processen med at kompilere TypeScript til JavaScript. Da TypeScript blev udviklet af Microsoft, er det ikke overraskende, at der findes plugins af høj kvalitet til Visual Studio og Visual Studio Code. Men som et open source-projekt er TypeScript blevet tilpasset overalt, lige fra open source IDE'er som Eclipse til ærværdige teksteditorer som Vim. Og hele projektet kan gennemses og downloades fra GitHub.

TypeScript-syntaks

Når TypeScript er installeret, er du klar til at udforske, og det betyder at forstå det grundlæggende i TypeScript-syntaksen. Da JavaScript er grundlaget for TypeScript, skal du være fortrolig med JavaScript, før du begynder. Uden tvivl er dine vigtigste interessepunkter de TypeScript-specifikke funktioner, der gør sproget unikt; vi berører højdepunkterne her.

TypeScript-typer

Naturligvis er den vigtigste syntaktiske funktion i TypeScript typesystemet. Sprog understøtter en række grundlæggende typer:

  • Boolsk: En simpel sand / falsk værdi.
  • Antal: I TypeScript, som i JavaScript, er alle tal flydende punktværdier - der er ikke noget separat heltal. TypeScript understøtter decimal-, hexadecimal-, binær- og oktalbogstav.
  • Streng: En streng tekstdata. Du kan bruge enkelt eller dobbelt anførselstegn til at omgive din streng, når du indstiller dataene. Du kan også bruge backticks ( ` ) for at omgive strenge med flere linjer, og du kan integrere udtryk i en streng med syntaksen $ {expr}.
  • Arrays og tuples: Disse typer giver dig mulighed for at gemme flere værdier i en specificeret sekvens. I et array er de individuelle værdier alle af samme datatype, mens de i en tuple kan være heterogene. TypeScript for hver() metode bruges til at kalde en funktion på hvert element i en matrix.
  • Enum: Ligesom typen med det samme navn i C # giver et TypeScript enum dig mulighed for at tildele menneskeligt læsbare navne til en række numeriske værdier.
  • Enhver: Dette er en type for en variabel, hvor du ikke nødvendigvis ved, hvilken værdi den ender med på forhånd - det kan f.eks. Tage dens værdier fra brugerinput eller et tredjepartsbibliotek.
  • Objekt: Dette er den type, der repræsenterer alt, hvad der ikke er en primitiv type; det er vigtigt for den objektorienterede karakter af TypeScript.

Der er to forskellige måder at eksplicit tildele en type til en variabel. Den første er syntaks for vinkelbeslag:

lad nogleVærdi: enhver;

lad strLength: nummer = (someValue) .length;

Og det andet er som syntaks:

lad someValue: any = "dette er en streng";

lad strLength: nummer = (someValue som streng) .length;

Disse kodestykker, der er taget fra TypeScript-dokumentationen, er funktionelt ækvivalente. Begge definerer nogleVærdi som en variabel af typen nogen og tildele "dette er en streng" som dens værdi, og definer derefter strLength som et tal og tildel som dets værdi længden af ​​indholdet af nogleVærdi.

TypeScript-typer kan også indstilles ved slutning. Det vil sige, hvis du indstiller en værdi på x til 7 uden at fastslå, hvilken type x er, antager compileren, at x skal være et tal. Under visse omstændigheder kan kompilatoren udlede en nogen type, selvom du kan bruge kompilationsflag for at sikre, at det ikke gør det.

TypeScript-typesystemet er ret rigt og går ud over omfanget af denne artikel. Der er en række avancerede typer og hjælpeprogrammer; disse inkluderer unionstyper, som giver dig mulighed for at fastslå, at en variabel vil være en af ​​flere specificerede typer og kortlagte typer, som er typer, du kan oprette baseret på en eksisterende type, hvor du omdanner hver egenskab i den eksisterende type i den samme vej. For eksempel kunne du oprette en unionstype til en variabel, som du enten skal være et tal eller en boolsk, men ikke en streng eller noget andet; eller du kan oprette en kortlagt type, der indstiller alle elementerne i en matrix til kun at læse.

TypeScript-grænseflade

Som de fleste objektorienterede sprog har TypeScript grænseflader, der giver brugerne mulighed for at definere deres egne typer. Grænseflader opretter de egenskaber, som et objekt har sammen med de typer, der er knyttet til disse egenskaber. TypeScript-grænseflader kan have valgfri egenskaber. For mere om syntaksen, se TypeScript-dokumentationen.

TypeScript generiske

TypeScript deler også konceptet med generiske lægemidler med objektorienterede sprog som Java og C #. (Den ækvivalente facilitet i C ++ kaldes a skabelon.) I TypeScript kan generiske komponenter arbejde over en række typer snarere end blot en, afhængigt af hvor i koden disse komponenter kaldes. Her er et meget simpelt eksempel fra TypeScript-dokumentationen. Overvej først denne funktion, der tager et argument op og returnerer det straks:

funktionsidentitet (arg: enhver): enhver {

returnere arg;

}

Fordi funktionen er defineret med nogen type, accepterer det et argument af den type, du vælger at kaste på det. Men hvad det returnerer vil være af nogen type. Her er en version af funktionen, der bruger generiske:

funktionsidentitet (arg: T): T {

returnere arg;

}

Denne kode inkluderer type variabel T, der registrerer typen af ​​det indgående argument og gemmer det til vores senere brug.

Der er meget mere til generiske stoffer, som er nøglen til at muliggøre genbrug af kode i store virksomhedsprojekter. Tjek TypeScript-dokumentationen for detaljer.

TypeScript klasse 

I objektorienteret programmering, klasser arve funktionalitet, og igen fungere som byggestenene til objekter. JavaScript brugte traditionelt ikke klasser i stedet for at stole på funktioner og prototype-baseret arv, men konceptet blev føjet til sproget som en del af ECMAScript 2015-versionen af ​​standarden. Klasser havde allerede været en del af TypeScript, og nu bruger TypeScript den samme syntaks som JavaScript. En af fordelene ved TypeScript's kompilator er, at den kan omdanne kode med JavaScript-klasser til ældre JavaScript-kode, der overholder standarderne før 2015.

TypeScript-dato

Der er en række metoder og objekter til rådighed for at hente og indstille dato og klokkeslæt i TypeScript, hovedsagelig nedarvet fra JavaScript. JavaTPoint har en god oversigt over, hvordan dette fungerer.

TypeScript-vejledning 

Klar til at gå dybere? Bliv hurtigere med disse TypeScript-tutorials:

  • TypeScript på 5 minutter fører dig gennem processen med installation af TypeScript, hvis du ikke allerede har gjort det.
  • Denne Visual Studio Code-tutorial viser, hvordan IDE'er virkelig føjer til din TypeScript-produktivitetsudvikling.
  • TypeScript-vejledning til begyndere: Den manglende guide er en virkelig grundig introduktion, der vil være nyttig, selvom du har ret begrænset JavaScript-oplevelse.

Hvis du ønsker at lære at bruge TypeScript med React, JavaScript-biblioteket til opbygning af brugergrænseflader udviklet af Facebook, skal du tjekke Sådan bruges TypeScript med React og Redux fra Ross Bulat og afsnittet om React og webpack i TypeScript-dokumentationen. Glad læring!