miksi kannattaa valita konekirjoitus JavaScriptin sijaan

konekirjoitus on kasvattanut suosiotaan parin viime vuoden ajan. Se mainitaan viiden lupaavimman kielen joukossa vuonna 2020. Angular, yksi suurimmista frontend-kehyksistä, käyttää konekirjoitusta. Noin 60% JS-ohjelmoijista käyttää jo konekirjoitusta, ja 22% haluaa kokeilla. Miksi?

historiallisesti JavaScript on päätynyt internetsivujen ja-sovellusten pääkieleksi. JavaScriptiä on nyt mahdollista käyttää sekä frontendissa että backendissä solmun kaltaisilla kehyksillä.js ja Deno.

mutta oliko JavaScript tehty suurten, monimutkaisten järjestelmien luomiseen, jollaisia on nykyaikaisessa verkossa? Ei.

tässä artikkelissa esittelemme sinulle ratkaisun tähän-Konekirjoitukseen-ja pääset alkuun kohti tyyppien lisäämistä JavaScript-koodiisi.

Tässä muutamia kohtia, joita käsittelemme:

  • mikä on konekirjoitus?
  • mitä tyypit ovat, ja miten ne toimivat TS: ssä?
  • JavaScript vs. konekirjoitus: kumman valita?
  • Konekirjoituksen aloittaminen.
  • lisää resursseja Konekirjoituksen opiskeluun.

mikä on konekirjoitus?

lyhyesti, TypeScript on superset JavaScript, joka on valinnainen kirjoittamalla ja kääntää tavallinen JavaScript.

yksinkertaisemmissa sanoissa TypeScript on teknisesti JavaScriptiä staattisella kirjoittamisella, milloin vain.

nyt, mitä syitä lisätä staattinen kirjoittaminen JavaScript?

voin luetella ainakin kolme:

  • klassikon 'undefined' is not a function.
  • kaltaisilta mestarillisesti piilotetuilta ninjavirheiltä voi välttyä helpommin koodaamalla koodia rikkomatta sitä merkittävästi.
  • suuntautuminen monimutkaisiin, laajamittaisiin järjestelmiin ei ole enää painajainen.

itse asiassa tutkimus osoittaa, että 15% kaikista JavaScript-vioista voidaan havaita Konekirjoituksella.

dynaamisen kirjoittamisen Vapaus johtaa usein virheisiin, jotka eivät ainoastaan vähennä ohjelmoijan työn tehokkuutta, vaan voivat myös jarruttaa kehitystä uusien koodirivien lisäämisen lisääntyvien kustannusten vuoksi.

siksi JavaScriptin epäonnistuminen esimerkiksi tyyppien ja kääntöaikaisten virhetarkistusten sisällyttämisessä tekee siitä huonon valinnan palvelinpuolen koodiksi yrityksissä ja suurissa koodibaaseissa. Kuten niiden tagline sanoo, TypeScript on JavaScript että skaalaa.

mitä minun täytyy oppia käyttämään konekirjoitusta?

konekirjoitus on pohjimmiltaan JS linter. Tai, JS dokumentaatio, että kääntäjä voi ymmärtää.

toisin kuin muissa kielissä, kuten CoffeeScript (joka lisää syntaktista sokeria) tai PureScript (joka ei näytä lainkaan Javascriptiltä), sinun ei tarvitse oppia paljon, jotta voisit alkaa kirjoittaa Konekirjoituskoodia.

tyypit TS: ssä ovat valinnaisia, ja jokainen JS-tiedosto on kelvollinen TypeScript-tiedosto. Vaikka kääntäjä valittaa, jos sinulla on tyyppi virheitä alkuperäiset tiedostot, se antaa sinulle takaisin JavaScript-tiedoston, joka toimii kuin se teki ennen. Missä oletkin, konekirjoitus tulee vastaan siellä, ja taitojasi on helppo kehittää vähitellen.

käytetäänkö konekirjoitusta etu-vai taustapuolella?

TypeScript on käännetty JavaScript. Siksi TS: ää voidaan käyttää missä tahansa, missä JS: ää voidaan käyttää: sekä frontendissa että backendissä.

JavaScript on suosituin kieli toteuttaa skriptausta sovellusten ja verkkosivujen etupuolelle. Typescriptiä voidaan siis käyttää aivan samaan tarkoitukseen, mutta se loistaa monimutkaisissa yritysprojekteissa palvelinpuolella.

Serokellissa suurin osa web-frontendistamme on toteutettu Konekirjoituksella.

mitä tyypit ovat, ja miten ne toimivat TS: ssä?

Lyhyt johdanto tyyppeihin

tyypit ovat tapa erottaa oikeat ohjelmat virheellisistä ennen niiden ajamista kuvaamalla koodissamme, miten aiomme käyttää tietojamme. Ne voivat vaihdella yksinkertaisia tyyppejä, kuten numero ja merkkijono monimutkaisia rakenteita täydellisesti mallinnettu meidän ongelma verkkotunnuksen.

ohjelmointikielet jakautuvat kahteen ryhmään: staattisesti tyypitettyihin tai dynaamisesti tyypitettyihin.

staattista tyypitystä käyttävissä kielissä muuttujan tyypin on oltava tiedossa käännösaikaan. Jos julistamme muuttuja, se olisi tiedossa (tai päätellä), jonka kääntäjä, jos se on numero, merkkijono, tai boolean. Ajattele Javaa.

dynaamista tyypitystä käyttävissä kielissä näin ei välttämättä ole. Muuttujan tyyppi tunnetaan vain ohjelmaa ajettaessa. Ajattele Pythonia.

konekirjoitus voi tukea staattista kirjoittamista, kun taas JavaScript ei.

Konekirjoituksen staattisen kirjoittamisen vuoksi sinun on yritettävä kovemmin:

  • introduce und defined variables (compile-time warnings help)
  • sum two strings that have numbers in them (like ”4” + ”20” = ”420”)
  • tehdä leikkauksia asioihin, jotka eivät salli niitä, kuten trimmata numero.

staattisilla tyyppijärjestelmillä voi luoda omia komposiittityyppejä. Näin insinöörit voivat kertoa aikeistaan tarkemmin.

eksplisiittiset tyypit tekevät myös koodistasi itsedokumentoivan: ne varmistavat, että muuttujasi ja toimintosi vastaavat sitä, mitä on tarkoitettu, ja antavat tietokoneen huolehtia ympäröivän asiayhteyden muistamisesta.

Konekirjoitustyypit

TypeScript on erilaisia perustyyppejä, kuten Boolean, numero, merkkijono, Array, Tuple, jne. Joitakin näistä ei ole olemassa JS: ssä; voit oppia niistä lisää Typescriptin dokumentaatiosta.

näiden lisäksi tässä on muutamia muita tyyppejä, jotka haluamme esitellä TS: n ekspressiivisyyttä:

mikä tahansa & tuntematon

vaikka mikä tahansa tyyppi voi kattaa, No, mitä tahansa haluat, tuntematon on sen tyyppi-turvallinen vastine.

kun haluat paeta tyyppijärjestelmästä, mikä tahansa mahdollistaa minkä tahansa JavaScript-muuttujan liittämisen siihen. Sitä käytetään usein mallintamaan tulevia muuttujia (esimerkiksi kolmannen osapuolen sovellusliittymistä), joita ei ole vielä tarkistettu ja joiden tyyppiä ei tunneta.

tuntematon on paljon samanlainen kuin mikä tahansa, mutta se ei anna sinun suorittaa mitään operaatioita muuttujalle ennen kuin se on nimenomaisesti tyyppitarkistettu.

mitätön

tyhjyyttä käytetään silloin, kun ei ole palautettua arvoa, esimerkiksi palautustyyppinä funktioille, jotka eivät palauta mitään.

ei koskaan

koskaan ei ole paluuta tyyppi jotain, joka ei saisi koskaan tapahtua, kuten funktio, joka heittää poikkeus.

leikkauspisteet & Liitostyypit

näiden avulla voit luoda mukautettuja tyyppejä, jotka sopivat paremmin logiikkaasi.

Risteymätyypit mahdollistavat useiden perustyyppien kokoamisen yhteen tyyppiin. Voit esimerkiksi luoda mukautetun tyypin henkilön, jolla on name: string ja phone_number: number. Se on sama kuin sanoisi: haluan, että tyyppini on sitä ja tätä.

Liittotyypit mahdollistavat tyypillesi yhden monista perustyypeistä. Voit esimerkiksi saada kyselyn, joka palauttaa joko result: string tai undefined. Se on sama kuin sanoisi: haluan, että tyyppini on sitä tai tätä.

jos ajattelee tyyppejä välilyönteinä, kaikki nämä tyypit käyvät nopeasti järkeen.

TypeScript-tyyppiset tyypit voivat olla sekä implisiittisiä että eksplisiittisiä. Jos et nimenomaisesti Kirjoita tyyppejäsi, Kääntäjä käyttää type inference päättelemään käyttämäsi tyypit.

niiden kirjoittaminen eksplisiittisesti antaa kuitenkin etuja, kuten auttaa muita kehittäjiä, jotka lukevat koodiasi, ja varmistaa, että se, mitä näet, on sitä, mitä kääntäjä näkee.

konekirjoitus vs. JavaScript

pragmaattisuus kannattaa. Katso tätä kuviota:

tyhjästä TypeScript on nyt 7. sijalla Github pull-pyynnöissä Q1 2020, PHP: n ja C: n yläpuolella. (lähde)

vaikka merkittävä syy tähän on Typescriptin tuki yrityksiltä kuten Microsoft (joka loi sen) ja Google, sitä tuetaan hyvästä syystä.

3 syytä valita konekirjoitus JavaScriptin sijaan

1. Konekirjoitus on luotettavampi

toisin kuin JavaScript, TypeScript koodi on luotettavampi ja helpompi refactor. Näin kehittäjät voivat välttää virheitä ja tehdä uudelleenkirjoituksia paljon helpompaa.

tyypit mitätöivät suurimman osan hassuista virheistä, jotka voivat hiipiä JavaScript-koodibaasiin, ja luovat nopean palautesilmukan, joka korjaa kaikki pienet virheet uutta koodia ja refactoringia kirjoitettaessa.

2. Konekirjoitus on selkeämpi

Making tyypit nimenomaisesti keskittyy huomiomme miten tarkalleen meidän järjestelmä on rakennettu, ja miten eri osat ovat vuorovaikutuksessa keskenään. Laajamittaisissa järjestelmissä on tärkeää pystyä abstrahoimaan pois muu systeemi pitäen samalla kontekstin mielessä. Tyypit mahdollistavat sen.

3. TypeScript ja JavaScript ovat käytännössä keskenään vaihdettavissa, joten miksi ei?

koska JavaScript on TypeScript-osajoukko, voit käyttää kaikkia JavaScript-kirjastoja ja haluamiasi koodeja TypeScript-koodissasi.

suosituimmilla JavaScript – kirjastoilla on tyypit vuonna 2020-Definitely Type on arkisto, jossa on tyyppejä useille eri JavaScript-kirjastoille, joiden avulla voit tehdä vuorovaikutuksestasi niiden kanssa tyyppiturvallisempaa.

tämä tarkoittaa, että voit vähitellen ottaa Konekirjoituksen JavaScript-koodiin, ensin lisätä tyyppejä yksittäisiin moduuleihin ja sitten laajentaa… kuluttaa tunnettua maailmankaikkeutta, luulisin.

Konekirjoituksen haitat

et voi vain ottaa JavaScript joukkue tai JavaScript arkisto ja heti vaihtaa ne idiomatic TypeScript. On kauppoja, ja etukäteen aika uhrauksia sinun täytyy tehdä.

vaikka voimmekin kiistellä säästöistä, joita tyyppien selväsanaisuus antaa pitkällä aikavälillä, lyhyellä aikavälillä niiden lisääminen vie enemmän aikaa. Tämä ei todennäköisesti ole valtava juttu, mutta se on argumentti hyväksi JavaScript.

siksi et välttämättä valitse konekirjoitusta pieniin projekteihin ja prototyyppeihin omaan käyttöösi.

testit vs. tyypit

lyhyesti koskettaa keskustelua testaus vs. tyypit: molemmat asiat kiinni eri luokkien vikoja, joten on järkevää tehdä molemmat ei-puolueellinen tavalla.

voit edelleen käyttää sekä yksikkötestausta että kehittyneempiä tekniikoita, kuten ominaisuustestausta TS: llä, säilyttäen samalla staattisen tyyppijärjestelmän edut.

yhteenvetona, tässä pikavertailu molemmista kielistä:

konekirjoitus JavaScript
TS on oliopainotteinen skriptauskieli JS on oliopainotteinen skriptauskieli
riippuvainen kieli (käännökset JavaScriptille) itsenäinen kieli (tulkittavissa ja toteutettavissa)
käännetty kieli, ei voida suorittaa suoraan selaimessa tulkattu kieli, suoritetaan suoraan selaimessa
voidaan kirjoittaa staattisesti dynaamisesti
parempi jäsennelty ja tiivis joustavampi, koska tyyppijärjestelmä ei rajoita
on .ts laajennus on .JS-laajennus
perustaja Anders Hejlsberg (C#: n suunnittelija) ja ylläpitäjä Microsoft luonut Brendan Eich (Netscape) ja ylläpitäjä ECMA (European Computer Manufacturers Association).
helppo valinta monimutkaisiin projekteihin hyvä työskennellä pienten, yksinkertaisten projektien parissa

TypeScript quickstart guide

Konekirjoituskääntäjä

kääntääksesi TS-koodin sinun on asennettava tsc (lyhenne sanoista TypeScript compiler). Helpoin tapa tehdä se on terminaalin kautta. Tämä voidaan tehdä helposti npm kautta käyttämällä seuraavaa komentoa:

npm install -g typescript

jos haluat käyttää konekirjoitusta Visual Studio-koodilla, heidän verkkosivuillaan on kätevä opas.

kun olet asentanut tsc, voit koota tiedostosi tsc filename.ts.

Tiedostojen siirtäminen JavaScriptistä Konekirjoitukseen

sanotaan, että haluamme muuttaa seuraavan JavaScript-tiedoston TypeScript johtuen outoa käyttäytymistä:

function my_sum(a, b) { return a + b; }let a = 4; let b = "5";my_sum(a, b);

hyviä uutisia. Mikä tahansa JS-tiedosto on teknisesti kelvollinen TypeScript-tiedosto ,joten olet jopa hyvä alku-vain vaihtaa tiedostopääte.ts alkaen .js.

Typescriptillä on type-päättely, Mikä tarkoittaa, että se voi automaattisesti päätellä joitain käyttämiäsi tyyppejä lisäämättä niitä. Tässä tapauksessa se olettaa, että funktio summaa kaksi muuttujaa tyyppiä mikä tahansa, mikä on totta, mutta ei ole suurta hyötyä juuri nyt.

jos haluamme summata vain numeroita, voimme lisätä my_sum: ään tyypin allekirjoituksen, jotta se hyväksyisi vain numeroita.

function my_sum(a: number, b: number) { return a + b; }let a = 4; let b = "5";my_sum(a, b);

nyt Konekirjoituksessa on virhe.

Argument of type 'string' is not assignable to parameter of type 'number'.

hyvä, että löysimme virheen paikan. 🙂 Voit edelleen paeta virheitä, kuten nämä, voit myös lisätä tyypin määritelmät muuttujia.

let b: number = "5" // Type '"5"' is not assignable to type 'number'.let b: number = 5 // Everything ok. 

konekirjoitus on varsin joustava siinä, mitä se voi tehdä ja miten se voi auttaa. Jos haluat vähemmän triviaalin esimerkin siitä, miten voit siirtää olemassa olevan JavaScript-koodin TypeScript-muotoon tai käyttää TypeScript-koodia JS-koodin parantamiseksi, lue tämä opas.

miten konekirjoitusta käytetään selaimessa?

voit ajaa TypeScript selaimessa, se on transpiled JavaScript TypeScript compiler (tsc). Tällöin tsc luo uuden .JS tiedosto perustuu .ts-koodi,jota voi käyttää millä tavalla tahansa JavaScript-tiedostoa.

resurssit jatko-opiskeluun

Konekirjoitettu syväsukellus

tämä ilmainen web-resurssi on kaikki mitä tarvitset aloittaa pois TypeScript, mukaan lukien yksityiskohtaisempia selityksiä osioista olemme jo käsitelleet täällä.

Opettele Konekirjoitus Tyhjästä!

käytännön 3 tunnin kurssi, joka käy läpi kaikki perustoiminnot TypeScript, miten käyttää sitä vuorovaikutuksessa joidenkin JS kehyksiä, ja miten käyttää valtaa TypeScript kirjoitettaessa JavaScript.

liikkuja

Exercism on paras voimavara harjoitella koodin kirjoittamista uudella ohjelmointikielellä. Mentorit, jotka ohjaavat sinua kohti idiomaattinen koodi, paljon hauskaa käytännön tehtäviä-ei ole mitään ei rakasta tällä sivustolla.

päätelmät

kaiken kaikkiaan TypeScript on erinomainen työkalu, joka on työkalusarjassa, vaikka et käyttäisikään sitä täydellä teholla. Se on helppo aloittaa pieni ja kasvaa hitaasti, oppiminen ja lisäämällä uusia ominaisuuksia kuin mennä. Konekirjoitus on käytännönläheinen ja aloittelijalle ystävällinen, joten ei tarvitse pelätä.

toivon, että tästä artikkelista on hyötyä Konekirjoituksessanne. Jos haluat apua tai sinulla on kysyttävää, muista kysyä niitä sosiaalisessa mediassa, kuten Twitterissä tai Facebook.