Nyt sprog: Typescript skal gøre det let at skrive kompliceret Javascript

Microsoft lancerer Typescript, som tilfører klasser og moduler til Javascript. Det skete med Anders Hejlsberg på scenen i Aarhus.

Får du dårlige nerver, når en Javascript-applikation vokser og bliver mere og mere kompliceret?

Så har Microsoft en mulig løsning klar: Typescript, som er lavet til at udvikle Javascript-applikationer i enterpriseklassen.

Selveste Anders Hejlsberg, manden bag C# og technical fellow hos Microsoft, var taget til Goto-konferencen i Aarhus for at præsentere Typescript, som er open source.

»Over de seneste fem år har vi i stigende grad hørt, både internt og fra folk i industrien, hvor svært det er at lave store applikationer i Javascript. Nu om dage laver vi jo Javascript-applikationer på både 5.000 og 10.000 linjer,« forklarede han tilhørerne.

Se Javascript-værktøjet Typescript i aktion

Javascript er vokset fra at være et scriptingsprog til små-applikationer til nu at være grundstammen i mange komplicerede webapplikationer. Og det er ikke sket uden problemer og grå hår hos udviklerne.

»Der er adskillige årsager til, at Javascript ikke er godt til store applikationer. Det var et scriptingsprog, som helt mangler de faciliteter, du bruger til at strukturere store applikationer, så som klasser, moduler og interfaces. Vi tænkte, at det kunne være rigtig cool, hvis vi kunne forstærke Javascript med klasser og moduler,« forklarede han.

Konceptet med Typescript er, at alt Javascript fungerer normalt i Typescript, mens alt det nye så bliver kompileret til ren Javascript.

»Typescript er et superset af Javascript, og al Javascript-kode er valid Typescript-kode. Det virker med alle eksisterende Javascript-biblioteker og frameworks, som for eksempel Node.js,« forklarede Anders Hejlsberg.

Giver statisk typeinformation i Javascript

I et interview med Version2 uddybede han fordelene ved Typescript, hvis man arbejder med Javascript.

»Javascript er dynamisk, og der er ikke noget statisk typeinformation overhovedet. Men hvis du ser på, hvad der er den underliggende motor for alt det fantastiske produktivitet, som moderne udviklingsværktøjer giver programmører, så er det at have statisk typeinformation til rådighed. For eksempel i Eclipse med Java eller Visual Studio med C#,« sagde han til Version2.

Uden statisk typeinformation er der mange ting, som bliver mere besværligt, forklarede Anders Hejlsberg.

»Hvordan laver vi code completion, eller ’find all references?’. Hvordan laver vi refactoring og er sikre på, at det ikke ødelægger koden? Det kan vi, fordi vi har statisk type-information i de sprog,« sagde han.

Typescripts implementering af klasser i Javascript følger de regler, som er blevet lagt ud med den kommende Ecmascript 6-standard.

Hjælpeværktøjet skal nemlig ikke skabe forstyrrelser for Javascript, der er blevet en af de grundlæggende standarder på nettet.

»Typescript skal ikke røre ved det, som gør Javascript til noget særligt, nemlig at det er cross-platform og en webstandard,« sagde han.

Og alt omkring Typescript er open source, understregede han.

»Kompileren og language services er open source, og hvem som helst kan bruge det på hvilken som helst platform og skrive disse services ind i for eksempel Eclipse. Så det er en lidt anderledes approach end tidligere,« sagde Anders Hejlsberg.

Tilbage på scenen på Goto-konferencen demonstrerede han de Typescript-værktøjer, der er bygget ind i Visual Studio 2012 og viste, hvordan Typescript-kode med klasser og moduler blev oversat til noget Javascript, der kunne det samme.

Man kan også besøge Typescriptlang.org og rode med det nye sprog. Her er en ’legeplads’, hvor man kan kode Typescript og se det tilsvarende Javascript samtidig.

Og kommentarerne på Twitter og blandt publikum i salen var generelt positivt. 'Som Coffeescript, bare bedre', lød en vurdering, mens et tweet lavede en anden kobling, nemlig til Googles bud på et nyt websprog, Dart: 'Nu vil alle sammenligne Typescript med Dart. Stakkels Dart.'

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (11)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Casper Bang

Jeg kunne godt tænke mig at have spurgt Hejlsberg, hvorfor de ønsker et navngivent superset til JavaScript/EcmaScript, istedet for at gå ind i arbejdsgruppen og standardisere Typescript under Ecmascript 6.

Det ville pynte da Microsoft ikke ligefrem har optjent megen goodwill mht. deres tidligere "embrace and extend" forsøg (bl.a. J++). Og hvis man ønsker cross-compilation til JavaScipt, så kan man vel lige så godt bare benytte eksisterende værktøjer og sprog (f.eks. GWT)?

UPDATE: Til jer der stemmer ned, kunne i ikke argumentere for hvorfor i er uenige?

  • 11
  • 10
Peter Lundsby

Grunden til at man foretrækker at lave et produkt selv, versus standardiseringsarbejde, er hastighed og for mit eget vedkommende er jeg glad for at kunne bruge TypeScript idag!

Mht. til cross-compilation og f.eks. Dart så er svaret jo at TypeScript er et supplement og ikke en erstatning, hvilket betyder at man kan bruge sin og alle andres JavaScript as-is, uden nogle fiksfakserier.

Jeg syntes TypeScript virker som en fantatisk ide, og et stykke utroligt innovation. Man kan så håber på at muligheden for typestærk js, sniger sig ind i ECMA Script standarden over tid.

  • 8
  • 0
Tim Ahrentløv

JavaScript bliver "embraced" men ikke extended. Typescript er med sin statiske typing et redskab til tooling som vil lette udviklingen af egl. web-applikationer og booste produktiviteten.

Det næste vi vil se er komponenter og frameworks til visual studio 2012 der vil få udviklingen til at minde om traditionel windows udvikling. A la delphi :) Helt uden at pille ved Javascript som sådan. Det vil stadig være vanilla JS der bliver outputtet og som ender i en browser nær dig.

Typescript er godt tænkt. Og purister kan jo blot lade være med at bruge MS værktøjer. Eller TS.

  • 7
  • 1
Flemming Seerup

for at kunne bruge TypeScript idag


helt enig! TS er noget der kan hjælpe dig her og nu, og som ikke kræver nogen ny plugin til browseren, da det er alm. javascript der bliver afviklet, og som der i høj grad minder om den typescript du har lavet (afhængig af hvor mange fancy ting du har brugt).

og det udelukker jo ikke at man kan arbejde på at få de forskellige features indarbejdet i ecmascript, så typescript til sidst kan lukkes.

  • 5
  • 0
Troels Henriksen

Jeg kunne godt tænke mig at have spurgt Hejlsberg, hvorfor de ønsker et navngivent superset til JavaScript/EcmaScript, istedet for at gå ind i arbejdsgruppen og standardisere Typescript under Ecmascript 6.

ECMAScript-gruppen er notorisk langsom og tung at danse med. TypeScript er et forsøg på at afprøve visse forslag i praksis. Alt andet lige, så tillader det også en mere velfunderet diskussion omkring hvordan ECMAScript bør udvikle sig, da man kan se hvad der rent faktisk fungerer.

  • 12
  • 0
Kræn Hansen

et stykke utroligt innovation


Jeg kan ikke se hvad typescript bringer på banen af nye og innovative features som der ikke allerede er set andre steder.
Please enlighten me ...
Jeg tænker samtidig at vi ikke brug for flere kandidater til javascript extenstions eller overtagere - men derimod en større udbredelse af de eksisterende med håb om at danne os flere erfaringer med hvad man rent faktisk kan forvente af scripters.

  • 1
  • 3
Troels Henriksen

Jeg kan ikke se hvad typescript bringer på banen af nye og innovative features som der ikke allerede er set andre steder.
Please enlighten me ...

Der er ikke noget nyt. Til gengæld er der god værktøjsunderstøttelse, hvilket ofte har større betydning.

Det er selvfølgelig lidt spøjst at heller ikke de to andre store Javascript-"konkurrenter", Coffeescript og Dart, har noget særligt nyt i sig. Måske er webprogrammører bare virkelig konservative?

  • 5
  • 1
Andreas Jydebjerg

@Casper Bang: Som medlem af Ecma deltager Microsoft skam aktivt i arbejdet omkring Ecmascript 6 men er jo ikke alene om at sætte tempoet. Typescript lægger sig meget tæt op af den pt. foreslåede Ecmascript 6 standard og er derfor en mulighed for allerede nu, under udviklingsfasen, at benytte sig af nogle fremtidige Ecmascript 6 features.

Såfremt man ikke bekymrer sig om sammenhængen imellem 'source' sproget og Javscript så er det korrekt at der findes mange glimrende sprog/værktøjer som f.eks. CoffeeScript eller GWT der tillader at kompilere til Javascript. Der hvor Typescript er anderledes, er at det i kraft af at være et superset af Javascript, tillader dig at anvende den meget store eksisterende kodebase af Javascript direkte i dine Typescripts. Samtidigt bestræber Typescript kompileren sig på at generere 'vanilla' Javascript der er så tæt på den originale Typescript source som muligt og denne transformation er beskrevet i Typescript standarden som er gjort tilgængelig under Open Web Foundations OWFa 1.0 Specification Agreement. Derved kan du meget nemt læse, forstå og arbejde videre med de Javascripts som genereres af Typescript kompileren.

"Det står der ellers direkte i teksten: "Typescript er et superset af Javascript...". Så er der vel, per definition, tale om en udvidelse af JavaScript."

Ja - men kun under udviklingsfasen! Der skal ikke en ny oversætter ud på klienterne. Ideen med Typescript er netop at Javascript er kommet for at blive og Typescript er 'blot' et udviklingsværktøj der gør det lettere at strukturere Javascript udvikling.

@Kræn: Set fra klientens synspunkt er Typescript hverken en Javascript extension eller en Javascript erstatning. Typescript er et værktøj der letter udviklingarbejdet når man skal lave store komplekse applikationer i Javascript. Hvis du synes Typescript er et 'problem', hvad er så din holdning til div. tidligere teknologier der tillader kompilering til Javascript som f.eks. Script# og CoffeeScript, eller for den sags skyld css preprocessorer som Sass og Less der på samme måde ikke erstatter css, men gør udviklingsfasen omkring css lettere?

Og det innovative i Typescript, som ikke er set andre steder, er at den meget store kodebase af Javascript der allerede eksisterer, alt sammen er gyldigt Typescript og derfor umiddelbart kan anvendes direkte. Type annotations kan laves i 'eksterne' filer og du kan på den måde tilføje statisk typeinformation til eksisterende biblioteker, noget som allerede er lavet til jQuery og Node.js.

  • 6
  • 1
Kræn Hansen

Først og fremmest tak til Andreas for et omfangsrigt og samtidigt velformuleret svar - det sker ikke så tit ;)

Hvis du synes Typescript er et 'problem', hvad er så din holdning til div. tidligere teknologier der tillader kompilering til Javascript

Nu er det dig der siger at jeg betragter det som et problem, det var ikke mig. Jeg sætter bare spørgsmålstegn ved om det nu er så innovativt et værktøj som det blev gjort til, at lave prekompilerings værktøjer der programmeres i sprog der er supersets af de eksisterende sprog er i hvert fald ikke nyt. Se fx hvad Olav har haft gang i den seneste lange stykke tid: http://www.mascaraengine.com/
Helt grundlæggende: Jeg kan li' idéen bag TS - men den er ikke ny.

  • 2
  • 0
Log ind eller Opret konto for at kommentere