Forest header image

Symfony Finland
Random things on PHP, Symfony and web development

Mikä on TypeScript?

TypeScript on ohjelmointikieli joka rakentuu suositun JavaScript-ohjelmointikielen varaan. Se ei ole kokonaan oma kielensä vaan lisää JavaScriptiin uusia ominaisuuksia. Päällimmäinen näistä on vahva tyypitys, josta kielen nimikin tulee.

Ohjelmointikielet voidaan jakaa kahteen luokkaan tyypityksen mukaan. Ohjelmointikieli on joko heikosti tyypitetty tai vahvasti tyypitetty. Heikosti tyypitetyissä ohjelmointikielissä, esimerkiksi JavaScriptissä, yksittäisten muuttujien tyyppiä ei tarvitse erikseen määritellä. Vahvasti tyypitetyissä kielissä, esimerkiksi Javassa, jokaisen muuttujan tyyppi on määriteltävä sitä luotaessa.

Yleistäen voidaan sanoa, että vahvasti tyypitetyn kielen kirjoittaminen on vaivalloisempaa, mutta se helpottaa erityisesti suurien ohjelmistojen ylläpitoa ja mahdollistaa paremman suorituskyvyn. Tämä johtuu yksinkertaisesti siitä, että ohjelmoijan komennot tulevat koneelle selkeämmäksi.

Jos esimerkiksi muuttujat "nimi" ja "ikä" on määritelty merkkijonoksi ja luvuksi, niin tyypitetyssä kielessä kone tietää että iän pitää olla numero (15) eikä merkkijono (viisitoista). Väärän tyyppisen arvon syöttäminen muuttujalle antaa välittömästi virheilmoituksen. Heikosti tyypitetyssä kielessä molemmat ovat muuttujia, mutta virheitä voi esiintyä esimerkiksi myöhemmin jos ikää ryhdytään vaikkapa jakamaan. Tämä johtaa toki virheeseen, mutta se tulee esille vasta ohjelmaa ajettaessa.

Monet suositut web-ohjelmointikielet, kuten JavaScript ja PHP ovat heikosti tyypitettyjä. Tämä on varmasti yksi syy miksi ne ovat niin suosittuja, sillä heikko tyypitys laskee aloituskynnystä. Molemmilla kielillä kirjoitettujen sovellusten monimutkaisuus on kasvanut. PHP-kielen versio 7 mahdollistaa valinnaisesti vahvan tyypityksen käytön (PHP 7.0: Why Scalar type hints with strict mode, and stricter weak mode), mutta JavaScriptin kohdalla ominaisuutta ei ole näköpiirissä.

TypeScript lisää vahvan tyypityksen JavaScriptiin

Alunperin Microsoftin kehittämä TypeScript lisää JavaScriptiin vahvan tyypityksen tuen. Se lisää kieleen mahdollisuuden asettaa muuttujien tyypit, sekä muita ominaisuuksia kuten rajapintaluokat. Tämä kaikki tapahtuu ohjelmointiympäristössä ja lopputulos käännetään julkaisun yhteydessä normaaliksi JavaScriptiksi, jota voidaan ajaa miljardeissa selaimissa ja muissa ympäristöissä.

ECMAScript on standardi johon JavaScript perustuu, joka puolestaan perusta jonka päälle TypeScript on rakennettu. Toisin kuin monet muut JavaScriptiin käännettävät kielet, kuten CoffeeScript, se ei siis luo kokonaan uutta syntaksia. Tämä laskee käyttöönoton kynnystä ja itseasiassa olemassaoleva JavaScript on suoraan käypää TypeScriptiä.

TypeScript ei siis pakota tyypitystä, vaan se voidaan ottaa käyttöön vähitellen. Itseasiassa TypeScriptissä muuttujien tyyppejä ei ole edes pakko erikseen määritellä vaan TypeScript olettaa muuttujan olevan sitä tyyppiä joksi se ensimmäisen kerran asetettiin (Type Inference). Lisäksi tarjolla on laaja kokoelma valmiita tyyppimäärittelyjä useille suosituille JavaScript kirjastoille kuten jQuery, Angular.js (1x.), Google Maps ja CKEditor.

TypeScript ei siis tuota aidosti vahvasti tyypitettyä ohjelmakoodia, vaan kaikki tyyppeihin viittaava poistetaan kääntämisen yhteydessä. Mikäli vahvat tyypit tulevat joskus JavaScriptiin, TypeScript koodi voidaan kääntää aidosti tyypitetyksi. Vastaava käytäntö on yleinen käytäntö modernissa JavaScript -kehityksessä ja tunnetaan käsitteellä transpilointi - lähdekoodin kääntäminen toiseen lähdekoodiin, ei siis koneen ymmärtävään konekieleen kuten yleensä.

Pähkinänkuoressa TypeScript on siis avoin ohjelmointikielen määrittely ja avoimen lähdekoodin työkalupakki jolla vahvaa tyypitystä jäljitellään ohjelmointiympäristössä. Tällä saadaan etuja erityisesti suurien ohjelmistojen kehityksessä, mutta TypeScriptistä saa etuja myös pienemmissä projekteissa sillä vahvasti tyypitetty kieli mahdollistaa parempien ohjelmointityökalujen kehittämisen.

TypeScript on jo laajalti käytössä

Eniten etua TypeScriptistä saadaan laajojen ja monimutkaisten ohjelmistojen ylläpidossa ja jatkokehityksessä. Olemassaolevien toimintojen muuttaminen on helpompaa kun ohjelmoijan tukena on paremmat työkalut ja virheet huomataan jo aiemmin. JavaScriptin yleiskäyttöisyydestä johtuen samaa kieltä voidaan käyttää sekä palvelin, että selainohjelmointiin.

TypeScriptin julkaistiin jo vuonna 2012, mutta vuonna 2016 kielestä on tullut yhä suositumpi. Sitä käytetään monissa toteutusprojekteissa mm Baswarella, Epicillä, Ericssonilla ja Wixillä. Ehkäpä huomattavampaa on kuitenkin että kieli on otettu erityisen hyvin vastaan sovelluskehyksiä rakentavissa projekteissa. Muun muassa seuraavat JavaScript sovelluskehykset käyttävät nykyään TypeScriptiä: Angular 2, Aurelia, Dojo, Ember, Ionic, NativeScript.

Sovelluskehykset tarjoavat kehittäjille rungon jonka päälle rakennetaan ohjelmistoja. Niiden kohdeyleisö on siis toiset kehittäjät, joten rima on tämän suhteen korkealla. TypeScript kieltä kehittävä tiimi on sama joka on aikanaan ollut mukana kehittämässä Microsoftin .NET alustaa, joten mukana on paljon kokemusta siitä kuinka rakennetaan toimiva ohjelmointikieli ja sitä tukevia työkaluja.

TypeScript on siis tutustumisen arvoinen työkalu ohjelmistokehittäjille. Se on vakaa ja sillä on takanaan laaja tuki Googlen ja Microsoftin kaltaisilta jättiläisiltä. Se tarjoaa mielenkiintoisia mahdollisuuksia kuten Java koodin kääntäminen TypeScript koodiksi. Se on helposti lähestyttävä aloittelijoille ja on tuntuu tutulta niin PHP, .NET kuin JavaScriptistä taustaa omaavillekin.

Lue lisää TypeScriptistä:


Written by Jani Tarvainen on Saturday July 30, 2016
Permalink -

« Mikä on GraphQL ja miten se eroaa REST-rajapinnoista (API)? - Tuotetiedon hallintaan avoimen lähdekoodin PIM, Akeneo »