9789059409323

Page 1

Inhoud

1KennismakenmetECMAScript20151

EenkortegeschiedenisvanJavaScriptenECMAScript2

BrendanEich2

ECMAScript,JavaScriptenversienummers2

ECMAScript2015,2016,2017enverder3

WatisECMAScript2015?4

OnderdelenvanECMAScript20155

Kenmerkenperfeature7

Nieuwefeaturestochgebruiken8

Compilersenpolyfills8

Traceur,BabelenTypeScript10

WatisTypeScript?11

RelatietussenES5,ECMAScript2015enTypeScript13

Allesisoptioneel14

Benodigdevoorkennis15

UkentJavaScript16

Tipsvoormeerlezen17

Indelingvanditboek17

Deontwikkelomgevinginrichten18

Editorenbrowser18

Node.jseneenserver19

TypeScriptinstalleren20

Oefenbestandendownloaden21

Conclusie 22

Praktijkoefeningen23

/ix

2NieuwefeaturesinECMAScript201527

Vanvarnaarletenconst28

varinES5–functionscope28

VariabeleninES6–blockscope29

Constantenmakenmetconst31

Templateliteralsenstringinterpolation32

Backtickgebruiken33

Stringsovermeerdereregels33

Arrowfunctions34

Kenmerken35

Lexicalthis36

Standaardwaardendoorgevenvoorparameters38

Optioneleparameters40

Benoemdeparameters40

Realistischvoorbeeld42

Restparameters43

Spread-operator43

Overigeparameters45

MeerES6-features46

Maps,Setsenmeer46

Nieuwearraymethodes48

Destructuring49

MeerES6-kenmerken50

Conclusie 51

Praktijkoefeningen53

3Werkenmetklassen57

Watzijnklassen? 58

Klassenzijnfuncties58

Werking59

Geenhoistingvanklassen60

Klasse-expressies60

Opbouwvaneenklasse61

Constructor61

Methodes62

Eigenschappen63

Gettersensetters64

Keywordsgetenset65

Statischemethodes67

Instantiesvaneenklassemaken69

/x /Inhoud/

Overervingensubklassenmakenmetextends69

4KennismakenmetTypeScript77

EenkortegeschiedenisvanTypeScript78

SupersetvanJavaScript78

Transpiling80

Alleplatformen80

UitbreidingvanJavaScript80

Voordelenvoorontwikkelaars82

KennismakenmetTypeScriptviadePlayground84

OefenenmetdePlayground85

EenklassegebruikenindePlayground86

TypeScript-typeringengebruikenindecode87

MeervoorbeeldenindePlayground89

TypeScriptlokaalinstalleren90

Package.json91

Afhankelijkheid:Node.js92

Node.jsinstalleren93

HelloWorldinTypeScript93

Package.jsonaanpassen94

TypeScriptHelloWorldschrijven95

TypeScriptconfigurerenmettsconfig.json97

Tsconfig.jsonmaken98

TypeScriptcompileroptions100

Meerdancompileroptions102

Conclusie102

Praktijkoefeningen104

5Typeringvanvariabelenenfuncties107

Hetkeywordsuper70 Conclusie 72
Praktijkoefeningen73
DebasistypenvanTypeScript108 Boolean109 TypeScriptinuweditor109 Number110 String 111 Templatestrings111 Array 111 Anyenvoid112 /xi /ECMAScript6&TypeScript/

Zelftypenschrijven-1.Interface114

Hetkeywordinterface114

Deinterfacegebruiken115

Voordelenvaninterfaces117

Optioneleeigenschappen117

Readonlyeigenschappen118

Returntypesaangeven119

Zelftypenschrijven-2.Klassen120

VerschilmetES6121

Shorthandnotatie:publicenprivateproperties122

Werkingvanpublic,privateenmeer122

Variabelenbeschermenmetgettersensetters123

Overervingviaklassen125

Meeroverklassen127

Wanneerklasseenwanneerinterface?128

Praktijkoefeningen137

6GenericsenandereTypeScript-mogelijkheden141

Watzijngenerics?142

Wanneergenericshandigzijn142

Hetgegevenstypeany143

Eengenericfunctieschrijven144

Typeinferencemetgenerics145

Genericsincombinatiemetlijsten146

Genericclasses147

Genericsmetinterfaces149

Namespaces151

Hetkeywordnamespace153

Eennamespacegebruiken154

Contextualtyping131 Contextualtypingoverrulen132 Meertypen–tupleenenum133 Tuple 133 Enum 133
HoeTypeScriptwerktmetafgeleidetypen-typeinference130
Typenomzetten-castingentypeassertions134 Conclusie135
/xii /Inhoud/

Namespacesovermeerderebestanden155

Referentiesopgeven156

Implementatieschrijven157

VerwijzingeninHTML157

Deoptie“outFile”intsconfig.json158

Volgordevanbestanden159

Conclusie160

Praktijkoefeningen161

7TypeScriptincompleteapplicaties163

TypeScript-applicatiesdebuggen164

Genererenvan.map-bestanden165

.map-bestandeninproductie166

ExterneJavaScript-bibliothekengebruiken166

TypeDefinitionFiles166

DefinitelyTyped168

TSDenTypings169

Typingsinstalleren169

jQueryenBootstrapinstalleren170

jQueryenBootstrapinzetteninhetproject172

Index.tsschrijven173

Deapplicatietesten173

Codeincheckeninversiebeheer174

BundelingvanbestandenmetWebPack175

Modulebundler175

WerkingvanWebPack176

WebPackinstalleren177

WebPackconfiguratiebestand177

HTMLaanpassen178

TypeScriptaanpassen178

Debundelgenereren179

Hetresultaatbekijken180

Loadersgebruiken181

Watcherinstellen182

EenTypeScripte-commerceapplicatiemaken184

Stap1–Omgevinginstellen185

Package.json185

Tsconfig.json186

Typings.json187

Webpack.config.js187

Productentoevoegen188

/xiii /ECMAScript6&TypeScript/

Stap2–Modelmaken188

Mapmaken188

Stap3–Indexbestandenmaken189

Eersteversietesten191

Stap4–Boekenladen192

Index.ts192

BookShop.ts193

Stap5–Helperbestandmaken194

Testen195

Stap6–Detailsperboektonen195

Detailsverbergen198

Stap7–Toevoegenaanwinkelwagen199

Modeltoevoegen199

BookShopuitbreiden199

Nieuwehelpermethodesschrijven201

HTMLuitbreiden202

Stap8–Productenverwijderenuitwinkelwagen203

Stap9–Bestellingplaatsen205

Leegmaken207

Stap10–Kleinewijzigingenindeuserinterface207

Compleet208

Conclusie209

/xiv /Inhoud/

Kennismakenmet ECMAScript2015

HTMLisalruim25jaardestandaardvoorhetmakenvanwebsites.HTML kanechternietalles.InHTMLwordtalleendestructuurvanpagina’s beschreven.JavaScriptisvanoudsherdeaanvullendeprogrammeertaal omHTMLinteractieftemaken.Hetisdepopulairsteprogrammeertaalop internet.JavaScriptstaatdaarmeeaandebasisvanelketechniekdie webdevelopersmoetenkennen.Hetisdemotorachterwebappsals Gmail,Facebook,Instagram,webwinkelsenmeer.MaarJavaScriptstamt ookalweeruit1995.ECMAScript2015(ookwel‘ES6’)isdeopvolgervan JavaScriptenbiedtnieuwekeywordsenprogrammeermodellendiebeter aansluitenbijdemogelijkhedenvanmodernebrowsersendeeisendie aanhedendaagsewebappswordengesteld.TypeScriptbreidtopzijn beurtECMAScript2015weeruitmetstriktetyperingenentoolsdiewe kennenuitprogrammeertalenalsJavaenC#.Dithoofdstukbiedteen inleidingopbeidetechnieken,waarnauvanafhetvolgendehoofdstuk metdepraktijkaandeslaggaat.

Uleertindithoofdstuk:

EenkortegeschiedenisvanJavaScriptenECMAScript.

WaaromECMAScript2015?

WatisTypeScript?

Benodigdevoorkennis.

Dewerkomgevinginstellenenaanvullendetools.

Indelingvanditboek.

1

EenkortegeschiedenisvanJavaScripten

ECMAScript

BrendanEich

JavaScriptisoorspronkelijkin1995ontwikkelddoorBrendanEich, diebijNetscapewerkte.Netscapeishetbedrijfdateenvande oerbrowsersvoorinternetmaakte,NetscapeNavigator.Ooktoen alwasJavaScriptbedoeldalsuitbreidingvanHTMLommeer interactiviteitopwebpagina’smogelijktemaken.Decombinatie vanHTMLenJavaScriptstonddestijdsbekendonderdenaam DynamicHTML (DHTML).

Debrowsersuitdietijd(InternetExplorer4enNetscape4) bodenondersteuningvoordecombinatievanHTMLenJavaScriptinwebpagina’s.Ondertussenzijnwenatuurlijkvelebrowserversiesverder.JavaScriptisuitgegroeidtoteenvande belangrijkstepijlersbinnendebrowsereninmodernewebapplicaties(‘webapps’).ZonderJavaScriptzoudenFacebook, Twitter,e-commerceofinternetbankierennietbestaan.Alle huidigebrowsers(InternetExplorer,Firefox,Chrome,Safari enzovoort)kunnenJavaScriptuitvoeren.

ECMAScript,JavaScriptenversienummers

IndeloopderjarenishetversienummervanJavaScriptsteeds lichtopgehoogd.Eerstliephetversienummeromhoogmethet verschijnenvaneennieuwebrowserversie.Nuisdeontwikkeling vanJavaScriptlosgekoppeldvannieuweversiesvandebrowser. JavaScriptisinmiddelsomgevormdtoteenofficiële,genormeerde engestandaardiseerdeprogrammeertaal.Ditisgedaandoorde structuureninhoudvandetaaltelatengoedkeurenenstandaardiserendoordeorganisatie EuropeanComputerManufacturers

/2 /Hoofdstuk1/KennismakenmetECMAScript2015

Association (ECMA).HiermeeisdeontwikkelingvanJavaScriptnu inhandenvaneenonafhankelijkinstituutennietmeervanéén browserfabrikant.

WatdoetECMA?

ECMAheefttottaaktechnischestandaardente publicerenenhieroptoetezien.ECMAhoudt zichnietalleenbezigmetJavaScript,maarook metanderecomputergerelateerdestandaarden, zoalshetbestandsformaatvoorcd-roms,de specificatiesvandeprogrammeertaalC#enhet bestandsformaatOfficeOpenXML.Wiltuhier meeroverweten,bezoekdan www.ecma-international.org

ECMAScript2015,2016,2017enverder

VroegersprakenwedusvanJavaScript1.0,1.2enzovoort.TegenwoordigwordtgesprokenvanECMAScript.Eerstkreeg

ECMAScriptookversienummers(ECMAScript3enECMAScript5). Sinds2015wordteenjaartalgebruikt.Elkjaarinjuniisereen congreswaarinwordtbeslotenwelkenieuwefeaturesofficieel wordentoegevoegdaandeprogrammeertaal.Zokrijgenwe ECMAScript2015,ECMAScript2016enbinnenkortECMAScript 2017(enzovoort).

Zolangvoorgesteldenieuwefeaturesnoggeendeeluitmakenvan detaalzelf,wordenzegeschaardonderhetkopje ECMAScript Next.DetabelgeefteenoverzichtvandegeschiedenisvanJavaScriptenECMAScript.

/3 /ECMAScript6&TypeScript/

ECMAScript3 1999

ECMAScript5 2009

ES6/ECMAScript2015 2015

ECMAScript7/2016/Next 2016enverder

DebegrippenES6,ECMAScript6enECMAScript2015worden vaakdoorelkaargebruikt.Erwordtdandeversieuit2015 bedoeld.Datisnieterghandig,maarhetisindeloopderjarennu eenmaalzogegroeid.

ECMAScript4?

MisschienishetuopgevallendatECMAScript4 inhetoverzichtontbreekt.Ditwasjarenlangeen voorstel,maardeontwikkelingisuiteindelijk gestopt.Dithadtemakenmetverschillenin inzichtbinnenhetcomitéoverderichtingdie JavaScriptopmoestgaanenonnodigecomplexiteitvannieuweonderdelen.ECMAScript4isdus nooitverschenenenerisgeenbrowserdiehet ondersteunt.Menisdirectverdergegaanmetde ontwikkelingvanECMAScript5.

WatisECMAScript2015?

ECMAScript2015iseengroteupgradevanJavaScript.Indetaal zijntalvannieuwekeywordsenfunctiesaanwezig.Nieuwzijn bijvoorbeeldkeywordsals let , const , class , super enmeer. Ookkuntugebruikmakenvanarrowfunctionsenlambda

Jaartal 1.0 1996 1.2 1997 1.5 1999/2000
JavaScript/ECMAScript
/4 /Hoofdstuk1/KennismakenmetECMAScript2015

expressions.MetECMAScript2015maaktJavaScripteenenorme stapvoorwaartsenwordtdetaalechtvolwassen.

JavaScriptcore

Hetisbelangrijkomuterealiserendat ECMAScript2015(netals‘ouderwets’JavaScript)nogsteedsbestaatuiteenrelatiefkleine setkernopdrachtendiewordenuitgevoerdin een hostingenvironment.Dekernopdrachten zijngestandaardiseerddoorECMA.Ditzijnbijvoorbeeld var , let , for , while , if enzovoort. Dehostingenvironmentisindemeestegevallen debrowser.MaarJavaScriptkanookinandere omgevingenwordenuitgevoerd.DenkaanJavaScriptopdeserver(Node.js)ofaanJavaScriptin pdf,ominteractievepdf-documententemaken. JavaScript–endusookECMAScript2015–is nietslechtsbeperkttotgebruikindebrowser.

OnderdelenvanECMAScript2015

EenhandigoverzichtvanalleonderdelenvanECMAScript2015is tevindeninde ECMAScriptcompatibilitytable,dietevindenisop kangax.github.io/compat-table/es6/ .(Googelopdetrefwoorden Kangax en es6 ,danishetheteersteresultaatindelijst.

Detabeluitafbeelding1.1iseenprimanaslagwerkenisalsvolgt opgebouwd:

• Boveninkiestueenversie.IndeafbeeldingisES6geselecteerd;ditisookdestandaardselectie.

• AandelinkerkantzieuwelkefeaturesdeeluitmakenvanECMAScript6. Datzijnbijvoorbeeldonderdelenalsdefault functionparameters, restparameters enverdernaarbenedenzakenals arrowfunctions en class.Veelvandezeonderdelenwordeninditboekbesproken.

/5 /ECMAScript6&TypeScript/

Afbeelding1.1 DeECMAScriptcompatibilitytablegeefteenoverzicht vannieuweJavaScript-featuresaandelinkerkant,endematewaarinze ondersteundwordendoordeverschillendebrowsers(degekleurdeblokjes).

• Aanderechterkantzietuvervolgensinwelkematedebetreffendefeaturedoordeverschillendeomgevingenwordtondersteund.Erzijnsecties Compilers/polyfills , Desktop browsers , Servers/runtimes en Mobile .

• Eengroenblokjebetekentdatdefeaturedeelsofvolledig wordtondersteunddoordebetreffendeomgeving,eenrood blokjebetekentdatditniethetgevalis.

Indecategorie Desktopbrowsers isbijvoorbeeldteziendat(op hetmomentvanschrijvenvanditboek)InternetExplorer11 slechts11%vandenieuwefeaturesondersteunde,maardat Edge,denieuwebrowservanMicrosoft,maarliefst95%vande ECMAScript6-featuresgoedverwerkt.OokFirefoxscoortruim bovende90%enChromeenOperascoren97%.

/6 /Hoofdstuk1/KennismakenmetECMAScript2015

Afbeelding1.2 Bekijkhoedeverschillendedesktopbrowsersscorenbij deondersteuningvanES6-kenmerken.

Kenmerkenperfeature

Dooreenbepaaldefeaturetekiezen,kuntuvanlinksnaarrechts bekijkenhoedezefeaturewordtondersteund.Inafbeelding1.3is bijvoorbeeldteziendathetnieuwekeyword class (ziehoofdstuk 3en4)doormodernebrowsersgoedwordtverwerkt,maardat mobielebrowsers(Android,iOS)hetlatenafweten.Ditbetekent datu class nietrechtstreekskuntgebruikenindezebrowsers.

Afbeelding1.3 Mobielebrowsersscoreninhetalgemeenslechtopde ondersteuningvannieuweECMAScript6-features.

Kiesbovenindetabeleenanderversienummer(bijvoorbeeld 2016+ofnext)omtezienwelkenieuwemogelijkhedenvoorde toekomstzijnvoorgesteldenhoedeondersteuningvanbrowsers enandereomgevingenopditmomentis.Waarschijnlijkknalteen tabelmetallemaalrodevakjesutegemoet.Dezeondersteuning wordtindeloopderjareningebouwd,metelkenieuwebrowserofruntime-versie.

/7 /ECMAScript6&TypeScript/

Afbeelding1.4 Ukuntalvastzienwelkeonderdelendekomendejaren aanJavaScriptwordentoegevoegd.Ondersteuningdoorbrowsersen runtimesisopditmomentuiteraardnogzeerbeperkt.

Nieuwefeaturestochgebruiken

Alseenvakjeroodisweergegeven,betekentditdathetnietdoorde aangegevenbrowserofruntimewordtondersteund.Maarwatnualsu tochgraagnieuweonderdelenals class wiltgebruiken,terwijluw

publiekmogelijkbeschiktovereenoudebrowser(InternetExplorer9, 10of11)ofeensmartphonemetAndroid4.4.Hoezitdatdan?Moetu dezetoevoegingendanmaarachterwegelaten?Ofergernog,bijelke nieuweeigenschapdieuwilttoepassenurenlangindetabellopenzoekenenzelfeenuitzonderingstabelopstellen?Gelukkigniet!

Compilersenpolyfills

Alsueenwebappontwikkeltvooreenintranetwaarbijuzeker weetdatiedereenEdgegebruikt,ofChrome50+,danisergeen probleem.GebruikzoveelECMAScript2015alsuwilt,wantalle vakjeszijngroen.Maarinwerkelijkheidwordtuwappwaarschijnlijkdoorhonderdenofduizendenbezoekersgebruikt,die

/8 /Hoofdstuk1/KennismakenmetECMAScript2015

allemaaloverandereapparatenenbrowserversiesbeschikken. Danschietencompilersenpolyfillsutehulp.

Uitbreiding

ECMAScript2015iseenuitbreidingophetoorspronkelijkeJavaScript.Erisdus100%overlapping.

• PolyfillszijnkleinescriptsofcodefragmentendiekunnenwordentoegevoegdaaneenHTML-paginaomnieuwefunctionaliteitookinoudebrowsersbeschikbaartemaken.Zevullenletterlijkhetgatopdatindebrowseraanwezigis.

• Compilers zijnprogramma’sdiehetmoderneECMAScript 2015datuschrijft,omzettennaarklassiekECMAScript5,dat inallebrowserskanwordengebruikt.Eenanderenaamvoor eencompilerisookwel transpiler,omdatdezenieuwecode terug-compileertnaar‘oude’code.

Afbeelding1.5 Dewerkingvantranspilersenpolyfills.ES6-codewordt omgezetnaarvoordebrowserbegrijpelijkeES5-code

/9 /ECMAScript6&TypeScript/

Erzijnverschillendecompilers/transpilersbeschikbaar.De bekendstezijn:

• Traceur EenproductvanGoogle.Doortraceur.jstoetevoegenaandepagina,kuntuverderopindepaginaECMAScript 2015-featuresgebruikenalsclasses,arrowfunctionsenzovoort.Zewordenterplekkeindebrowservertaald.Voor betereprestatieskuntutraceurookgebruikenopdeserver, ofineenGrunt/Gulp-workflow.Meerinformatieovertraceur istevindenop github.com/google/traceur-compiler.

• Babel OokBabel(spreekuit:‘Babbel’,niet‘Beebel’)iseen JavaScript-compiler.Hetiseenonafhankelijkopensourceproductdatmetconfiguratiescriptsinhogemateingesteld kanworden.VeelmensenvindendecodediedoorBabel wordtgegenereerdbeterleesbaardancodediedoortraceur wordtgegenereerd,maarhetgebruikendeconfiguratievan Babel6zijnlastig.AllesoverBabelistevindenop babeljs.io.

Traceur,BabelenTypeScript
/10 /Hoofdstuk1/KennismakenmetECMAScript2015
Afbeelding1.6 BabeliseenbekendeJavaScript-compiler,maarislastigerinhetgebruik.

• TypeScript Enjawel,ookTypeScriptiseenJavaScript-compiler.UkunterECMAScript6-codemeeschrijven,diedoor TypeScriptwordtomgezetnaarES5-code.TypeScriptondersteuntnognietálleECMAScript2015-features(ziedecompatibilitytable),maarwelvoldoendeenisrelatiefeenvoudigin hetgebruik.BovendienbiedthetgebruikvanTypeScripttal vananderevoordelen.Daarkomenweinderestvanhetboek uiteraardnoguitgebreidopterug.Hetalgemeneadresvan TypeScriptis typescriptlang.org.

WatisTypeScript?

WehebbeninditboeknietvoornietsgekozenvoorTypeScript. HetismeerdanalleeneenJavaScript-compiler.DoorTypeScript teschrijvenkrijgtudebeschikkingovereenseriemogelijkheden dievoorheenalleenvoorapplicatieprogrammeurs(Java,C#, Pascal/Delphi)warenweggelegd.Opdewebsiteomschrijftteam TypeScriptdetoolals JavaScriptthatscales.DedoorTypeScript gegenereerdeJavaScript-codeisbeschikbaarvoorelkebrowser enelkbesturingssysteem.TypeScriptzelfisopensourcesoftware.

/11 /ECMAScript6&TypeScript/
Afbeelding1.7 TypeScriptomschrijftzichzelfals:‘JavaScriptthatscales. Anybrowser,anyhost,anyOS’.

WiemaaktTypeScript?

TypeScriptisoorspronkelijkafkomstiguitdestal vanMicrosoft.EnalsuvindtdatTypeScript behoorlijkwatovereenkomstenlijkttehebben metC#,danhebtuhetgoedgezien.TypeScript isnamelijkontwikkelddoorAndersHejlsberg,de mandieookaandewiegstondvandeprogrammeertaalC#(2000).DaarvóórheeftHejlsberg ookdetalenDelphi(1995)enTurboPascal (1983)geschreven.Eenzeerinvloedrijkprogrammeurdus.MeeroverHejlsbergistevinden op en.wikipedia.org/wiki/Anders_Hejlsberg

TypeScriptisnuechteropensourcesoftware, iedereenkandebroncodeinzienenverbeteren. TypeScriptisdaarmeeeigenlijkvanonsallemaal.

InhetkortbiedtTypeScriptextrafeaturesindevormvandata typing(oftewel:hetdatatypeaangeven,dusafdwingendateen bepaaldevariabelevanhettype string , number , boolean ofcustomtypeis),typedefinitionfilesomandereJavaScript-bibliothekentekunnengebruikenineenTypeScript-project,interfaces, enums,genericsennogveelmeer.Uiteraardleestuhierveel meeroverinderestvanhetboek.

OmdatTypeScriptvoorafwordtomgezetnaarJavaScript,worden foutenindecodealineenvroegstadiumontdekt.Datiseen grootverschilmetdehuidigegeneratieJavaScript-code,waarmee foutenpasrun-time(ofviauitgebreidetestscriptsmettalvanifstatements),dusachterafzichtbaarworden.MetTypeScriptkunt urobuustecodeschrijvendieminderfoutenbevat.Ditisuiteindelijkzowelvoordeprogrammeuralsvoordeeindgebruikereen grootvoordeel.

/12 /Hoofdstuk1/KennismakenmetECMAScript2015

RelatietussenES5,ECMAScript2015en

TypeScript

Inafbeelding1.8isderelatietussenhetaloudeECMAScript5,het nieuweECMAScript6/ECMAScript2015enTypeScriptgoedte zien.

Afbeelding1.8 ECMAScript2016enTypeScriptzijnbeidesupersetsvan gewoonJavaScript.DaaromkanelkegeldigeregelES6(ofTypeScript) ookwordenteruggebrachtnaareengeldigeES5-syntaxis.Leesbaarheid envereenvoudigingvandecodezijnbelangrijkedoelstellingen.

• IndekernvandecirkelsstaatES5.Ditiseen–naarhedendaagsemaatstaven–beperktesetopdrachten,dieechter goedwordenondersteunddooralleomgevingen:zowelbrowsers,mobieleapparatenalsserver-runtimes.

• ES6/ECMAScript2015iseenuitbreidingvanES5.Ditbetekent dusdater100%overlappingbestaat.ElkegeldigeregelES5is ookgeldiginECMAScript2015.Omgekeerdisdatuiteraard niethetgeval,daarvoorzijndecompilers/transpilersnodig. MaarhetisbelangrijkterealiserendatES6inallegevalleneen uitbreiding vanES5is.Erzijngeennieuwesyntaxisregels,geen nieuwetekensdieverbodenzijn,aluwJavaScript-kennisblijft geldig.Dezewordtalleenuitgebreidmetnieuwemogelijkheden.

/13 /ECMAScript6&TypeScript/

• TypeScriptbreidtopzijnbeurtES5enES6weeruit(met striktetyperingen,interfacesenaldieanderezakendiewe hierbovengenoemdhebben).Oftewel:elkegeldigeregelES5 isóókgeldiginTypeScript.Ditiseengrootvoordeel,wanthet betekentopnieuwdatugeenafwijkendesyntaxisof puntkomma’shoeftteleren.AlleJavaScriptblijftgeldig;er wordenalleennieuwe,extramogelijkhedenaantoegevoegd. Allesisoptioneel

EenanderkenmerkisdatzowelES6alsTypeScriptvolledigoptioneelis.Hetwerkenmetklassen,interfacesenzelfgedefinieerde typenismogelijk(enhetmaaktuwlevenalsfront-endprogrammeureenstukaangenamer),maarhetisgeenszinsverplicht.

WatiseenJavaScript-fout?

UweetwaarschijnlijkdatallesinJavaScriptvan hettype var is.Allevariabelenzijn loosely typed.Umageenstatementschrijvenals var myVar=‘Hello’ (myVarisnuimplicietvanhet type string ).Verderopmaguvervolgensschrijven myVar=10 (nuis myVar vanhettype number ).InJavaScriptisditvollediggeaccepteerd. TypeScriptzalerechterovervalleneneencompiler-errorlatenzien.Hetscriptzalwelwerken, maarwaarschijnlijkishetongewenstdateen variabeledeenekeereenstringendeandere keereennummerbevat.TypeScriptcontroleert ditsoortzakenenwaarschuwtu.Dooralleende bestandsextensieaantepassenvan *.js naar *.ts wordtualopditsoortfoutengewezen.U hoeftergeenregelcodevooraantepassen.

/14 /Hoofdstuk1/KennismakenmetECMAScript2015

Wezullenhetzekernietaanbevelen,maarookzonderéénregel TypeScriptteschrijvenkuntudesgewenstJavaScript-codeaande TypeScript-compileraanbieden.Mochtenerlogischefouteninde –bestaande–JavaScript-codestaan,danwordendezeookopgemerktdoordeTypeScript-compiler.

Afbeelding1.9 TypeScriptcontroleerthettypevanvariabelen.Dooralleendeextensieaantepassennaar.tskrijgtudirectinzichtinditsoort logischefouten.ZekomenveelvoorinJavaScript-apps.

//test.ts

varmyVar=10; myVar=“hello”;//ts-error:“Type‘string’isnotassignabletotype‘number’

OverigemogelijkhedenvanECMAScript2015enTypeScript komeninderestvanhetboekuiteraarduitgebreidaandeorde. Ukentnuechterderelatietussendetechniekenenweetwaaru debegrippenkuntplaatseninhetlandschapvanwebdevelopmenttechnieken.

Benodigdevoorkennis

Ditboekmaaktdeeluitvande WebDevelopmentLibrary (www.webdevelopmentlibrary.nl).Inelkdeelwordteenopzichzelfstaandetechniekbesprokendietemakenheeftmetwebdevelopment.Andere,gerelateerdetechniekenwordenbekend verondersteld.Zobetaaltualleenvoordatgenewatuechtnodig hebt.

/15 /ECMAScript6&TypeScript/

InditboekgaanweinopECMAScript2015enTypeScript1.8. TypeScript2.0isophetmomentvanschrijvenvanditboekin bèta,maarbevatgeenaanvullingenofwijzigingendievoordeze uitgavevanbelangzijn.ECMAScript2015enTypeScriptzijnbeide uitbreidingenopJavaScript,zoalsuindevorigeparagraafhebt gelezen.

UkentJavaScript

WegaanerdanookvanuitdatuJavaScriptredelijktotgoed beheerst.UhebtalervaringmethetschrijvenvanJavaScripten eventueelhetwerkenmetaanvullendeJavaScript-bibliothekenof -frameworks,zoalsjQueryofAngular.VoorkennisvanjQueryof Angular(ofandereframeworks)isechternietnodig.Wegaanin ditboeknietinopzakenalsvariabelen, for -en while -lussen, voorwaardelijkestatements(if )endergelijke.Dezeworden bekendverondersteld.

Wathoeftunietteweten?

KennisvanandereJavaScript-bibliotheken(zoals jQuery,Backbone,Knockout)of-frameworksis nietnodig.OokhoeftunikstewetenvanserversidedtalenalsPHP,Python,Ruby,JavaofC#. MochtuwelJavaofC#kennen,danzullenveel concepteninTypeScriptubekendvoorkomen. Maarvoorkennisvandezetalenisnietperse nodig.

BovendienwordenECMAScriptenTypeScript,zoalsuinmiddels hebtbegrepen,gebruiktindecontextvaneenwebsiteof webapp.UmoetdaaromenigekennishebbenvanHTMLenCSS. Umoeteenbasispaginamettags,attributen, console.log()statementsenzovoortgoedkunnenschrijvenenbegrijpen.

/16 /Hoofdstuk1/KennismakenmetECMAScript2015

KanuwHTML-ofJavaScript-voorkennisweleenopfrisbeurt gebruiken?Leesdaneerstdevolgendetitels(vandezelfde auteur):

• WebDevelopmentLibrary–JavaScript,ISBN9789059407589

• WebDevelopmentLibrary–HTML,ISBN9789059408081

Indelingvanditboek

Ditboekbestaatuittweedelen.

• Hoofdstuk1totenmet3 Indezehoofdstukkengaanwein opECMAScript2015/ES6.UleertopwelkemanierdestandaardJavaScript/ES5-codewordtuitgebreidmetnieuwekeywordsenmogelijkheden.Uschrijft‘gewoon’JavaScript-code, diedirectkanwordenuitgevoerdinmodernebrowserszoals Chrome,FirefoxenEdge.

• Hoofdstuk4totenmet7 DitdeelgaatinopTypeScript.De kennisuitdeeerstehoofdstukkenwordtdanbekendverondersteld.UleerthoeES6-codeverderwordtuitgebreidmet TypeScript-specifiekekenmerken.Uwcodemoeteerstdoor deTypeScript-compilerbewerktwordenvoordathijuitvoerbaarisindebrowser.Leesvooralderestvandithoofdstukom hieralvastkortkennismeetemaken.

Tipsvoormeerlezen
/17 /ECMAScript6&TypeScript/

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.