Typescript 2.0 gør kål på Javascripts frygtede 'undefined'

Microsoft frigav for nylig version 2.0 af Typescript, som er ved at finde solidt fodfæste blandt Javascript-udviklere.

Javascript er ét af de mest anvendte programmeringssprog takket være understøttelse i samtlige større browsere, men det er også et sprog med begrænsninger, der har medført en voksende strøm af forskellige frameworks de senere år, der har udbygget Javascript med funktioner, efterspurgt af udviklerne.

Microsofts Typescript går i en lidt anden retning og tilbyder et programmeringssprog, der indeholder mange af de features, der kendes fra de store applikations-programmeringssprog, men oversættes til Javascript.

Som navnet måske antyder, så er én af de nyttige features i Typescript muligheden for type-fasthed, så når man compiler sit Typescript, laver compileren et typecheck, så man altså får et typefast output i Javascript, selvom Javascript i sig selv ikke er typefast.

Version 2.0 af Typescript blev frigivet for nylig, og Typescript er nu så etableret, at flere af de store frameworks til Javascript er i færd med at skifte til det, og eksempelvis blev Angular 2 skrevet i Typescript.

Blandt nyhederne i Typescript 2.0 er, at null og undefined nu er egentlige typer, og det gør det nemmere at tage hensyn til, at man af og til risikerer at få enten den ene eller den anden retur.

»Undefined og null er nok kilde nummer ét til bugs i Javascript. Nu er undefined en type i Typescript 2.0. Det er især nyttigt, når man får nogle data fra API'er, og de sender en undefined tilbage. Det plejer at give et crash, hvis man ikke håndterer det i sin kode,« fortæller lead front-end developer Dennis Haulund Nielsen fra udviklingshuset Nodes til Version2.

For at udnytte denne funktion i Typescript 2.0 skal man dog slå strikse null-checks til. Det anbefaler Microsoft, at man gør, men det kan give problemer med eksisterende kode, og derfor er det altså foreløbig valgfrit.

Ny syntaks og objektorienteret programmering

En af de specielle ting ved Typescript er, at almindelig Javascript-kode kan indsættes som en del af et program skrevet i Typescript. Typescript er et 'supersæt' af Javascript. ‘Del’ vil sige, at al Javascript - inklusive de features, der er på vej i kommende standarder - er en ægte delmængde af Typescript.

Men det bliver lidt mere kompliceret end som så, for Typescript bruger en lidt anden syntaks end Javascript.

»Jeg havde aldrig kodet andet end Javascript. Der er en læringskurve, men det er det værd til store projekter. Hvis man har et lille projekt, så er det nok ikke det værd at få sat alle værktøjerne op til Typescript,« siger Dennis Haulund Nielsen.

Typescript definerer eksempelvis returtyper for metoder i stil med syntaksen i Swift, men lidt anderledes end sprog som C# og Java, men ligesom de to sprog, så er Typescript også tænkt til at understøtte objektorienteret programmering.

»Det bliver tit brugt som et argument imod Typescript, at de har truffet et overordnet arkitekturvalg. Men vi arbejder alligevel objektorienteret her i huset,« siger Dennis Haulund Nielsen.

Kompatibelt med alle browsere

Javascript bliver i forvejen anvendt til mange typer applikationer, men det tager tid at få indført nye features i sproget. Det er én af grundene til, at der findes så mange frameworks til Javascript.

Typescript oversætter til Javascript-standarden ES5, men der er også en ES6 og ES2016+ undervejs. De understøttes dog endnu ikke af alle browsere, hvorimod man skal tilbage til Internet Explorer 8 for at løbe ind i problemer med ES5.

ES5 er imidlertid også en delmængde af de nyere standarder, og de er også delmængder af Typescript. Det betyder, at kode skrevet i Typescript bør være kompatibelt med fremtidige udgaver af Javascript.

Da disse nyere udgaver af Javascript også er inkluderet i Typescript, giver det også mulighed for at kode til dem som en del af en Typescript-applikation, der så lige nu vil oversætte til den ældre ES5.

Hjælp til større projekter

For udviklerne giver Typescript mulighed for at bruge nogle mere avancerede værktøjer, end det er muligt blot med Javascript og diverse frameworks. Det er eksempelvis lettere for flere udviklere at arbejde sammen.

»Med et godt IDE får man autocomplete og Intellisense. Det er nemmere at arbejde på et team, når kollegerne hurtigt kan se for eksempel argumenter til et library. Det flyver mere derudaf, når man koder,« forklarer Dennis Haulund Nielsen.

Hos Nodes er udviklerne i færd med at overføre kernekomponenterne, der bliver brugt i flere projekter, til Typescript for blandt andet at øge kvalitetssikringen af koden.

»Vi genbruger modulerne i mange projekter, så det giver mening, at de bliver så fejlfri som muligt. Derfor giver det mening at lægge tiden i at portere dem,« siger Dennis Haulund Nielsen.

En anden ny funktion i Typescript 2.0 er også en hjælp til de større projekter, nemlig muligheden for at gøre egenskaber til read-only. Det kan hjælpe til at forhindre, at to udviklere, der arbejder på hver deres del af koden, får introduceret kode, der overskriver hinandens objekter.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (6)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Martin Jünckow

Typescript er genialt og har man endnu ikke prøvet det bør man give det et forsøg.

Når selv Google har overgivet sig, som ellers har haft travlt med at pushe deres eget Dart, så er det et kæmpe blåstempel af sproget.

  • 5
  • 0
Jesper Kleis

Hvis man arbejeder med C# projekter i gennem visual studio, så kan typewriter virkelig anbefales.

Den muliggør f.eks. at lave automatiske interfaces til alle ens klasser, så client koden bruger samme datastrukturer som serveren.

Den har reddet os en del gange - og derudover gør det så meget lettere at kode sine requests op mode serveren.

https://visualstudiogallery.msdn.microsoft.com/e1d68248-f30e-4a5d-bf18-3...

  • 4
  • 0
Allan Ebdrup

Min erfaring er, at kilde nummer et til fejl i JavaScript, er nøjagtig den samme som i alle andre programmeringssprog: Unødig kompleks kode samt dårlig arkitektur og designvalg. Slet ikke noget så low-level, som om der findes noget der hedder undefined. Det er tæt på ligegyldigt, i min erfaring.

Derudover er det svære, som forretning, at skrive det "rigtige" kode. Der er ikke noget kode med færre fejl, end den kode man lader helt være med at skrive.

  • 4
  • 0
Martin Bæk

Det vil jeg da lige tage et kig på.
Jeg har selv brugt https://github.com/cskeppstedt/t4ts, som kan noget tilsvarende. Blot via T4 templates. Det fungerer nu også ret godt.

Jeg er i øvrigt vældig glad for Typescript og har brugt det både med AngularJs og Angular2. Kombinationen af T4ts og Typescript har hjulpet mig mange gange, hvor jeg har refactoreret mine dataklasser.

  • 0
  • 0
Log ind eller Opret konto for at kommentere
Jobfinder Logo
Job fra Jobfinder

Call to action

Javascript er ét af de mest anvendte programmeringssprog takket være understøttelse i samtlige større browsere, men det er også et sprog med begrænsninger, der har medført en voksende strøm af forskellige frameworks de senere år, der har udbygget Javascript med funktioner, efterspurgt af udviklerne. Microsofts
Typescript går i en lidt anden retning og tilbyder et programmeringssprog, der indeholder mange af de features, der kendes fra de store applikations-programmeringssprog, men oversættes til Javascript. Som navnet måske antyder, så er én af de nyttige features i Typescript muligheden for type-fasthed, så når man compiler sit Typescript, laver compileren et typecheck, så man altså få...