Muutakin ohjelmointia tavalliselle koodaajalle, osa 2: TypeScript, JavaScript ja koodin ylläpitäjän mielipide

Mika Kattainen
Orangit
Published in
3 min readMay 6, 2021

--

Internet on täynnä kirjoituksia siitä, miksi pitäisi tai ei pitäisi käyttää TypeScript-kieltä. Päätin siis kirjoittaa asiasta yhden mielipiteen lisää, jotta eivät vain lopu luettavat tekstit keneltäkään kesken. En kuitenkaan yritä myydä kenellekään käyttöön yhtä tai toista teknologiaa vaan tämä teksti on lähinnä oma mielipiteeni siitä, minkä parissa olen itse tykännyt tehdä töitä ja miksi.

Urani oli hyvin frontend-painotteista ennen nykyistä työpaikkaani, ja olen päässyt tutustumaan moneen JavaScript-teknologiaan. Olen käyttänyt JavaScriptiä ilman tyypityksiä ja Flow-kirjaston kanssa sekä TypeScript-ohjelmointikieltä.

Ylläpitotyössä pääsen näkemään paljon erilaisia projekteja, ja projektien teknologiat ja koodin laatu vaihtelevat välillä paljonkin. Yhden asian olen ylläpidossa kuitenkin huomannut: projektit, joissa on ollut käytössä TypeScript, ovat usein helpompia ylläpidon näkökulmasta kuin JavaScriptillä tehdyt projektit. TypeScript-projekteihin on helpompi päästä mukaan, kun lähtee ensimmäisen kerran lukemaan koodia tai rakentamaan uutta toiminnallisuutta, koska pelkästään koodia katsomalla on enemmän tietoa esillä. Paremman luettavuuden lisäksi TypeScript auttaa myös estämään uusien bugien syntymisen. Virheet huomaa usein nopeasti koodia kirjoittaessa, koska TypeScript ilmoittaa heti, jos tyyppi ei ole oikea tai jos yrittää kutsua arvoa, jota ei löydy tai joka on jäänyt määrittelemättä. Jos jokin selvä virhe löytyy, TypeScript ei suostu kääntymään, minkä takia virheitä ei helpolla siirry omaa kehitysympäristöä pidemmälle.

TypeScript on kuin dokumentaatio, jota ei tarvitse erikseen lähteä etsimään muualta. Hyvin yksinkertaisena esimerkkinä toimii käyttäjän nimen palauttava funktio. JavaScript-projektissa täytyy tietää, millä avaimilla oikeat arvot löytyvät. Onko käyttäjällä valmiiksi name-avaimella koko nimi vai löytyykö siltä kenties avaimet firstName ja surName.

Kun käytössä on TypeScript, ei tarvitse lähteä selvittämään, minkälainen käyttäjä-objekti on, vaan tämä tieto löytyy suoraan koodista.

Tämä on hyvin yksinkertainen esimerkki, ja mitä enemmän ja mitä monimutkaisempaa koodi on, sitä enemmän TypeScript auttaa sen ymmärtämisessä, kun projektiin alkaa ensimmäisen kerran tutustua. Jos käytössä on TypeScript ja koodiin on kirjoitettu kattavat tyypitykset, saan heti paljon enemmän tietoa ilman, että joudun etsimään sitä erillisestä dokumentaatiosta. Ymmärrettävästi tyypittäminen ei ole kehitysvaiheessa välttämättä olennaista. Varsinkin, jos sovelluksen on tehnyt yksittäinen henkilö, hän luultavasti tuntee sovelluksen kuin omat taskunsa. Tällaiset tapaukset ovatkin usein ylläpidon haltuunoton näkökulmasta ne vaikeimmat.

Itselleni on myös jäänyt mielikuva, että yleinen koodin laatu on tähän mennessä ollut parempaa TypeScript-projekteissa. Tämä tosin saattaa johtua osittain siitä, että vertailukohtana on toiminut muutama projekti, joissa koodi on ollut kaikin tavoin huonoa kovakoodatuista API-avaimista projektin kansiorakenteisiin. Ja TypeScript ei ole aina ollut tae paremmasta tai hyvästä koodista, mutta yleisesti TypeScript-projekteihin on ollut helpompi päästä mukaan. Mielelläni näkisin TypeScriptiä käytettävän enemmän.

Kuten kaikessa muussakin on myös TypeScriptin käytössä omat huonot puolensa. Koska kaikki kirjastot eivät tule valmiiksi TypeScript-tyypitysten kanssa ja oma koodi on tyypitettävä itse, vaatii tyypitykset hieman lisätyötä. TypeScript lisää myös build-vaiheeseen yhden lisäaskeleen: koodin kääntämisen. Koodin kääntäminen on kuitenkin nykyään niin automatisoitua ja nopeaa, että tämä ei oikeastaan ole ongelma. Lisäksi monissa projekteissa on käytössä Babel-kirjasto tai vastaava, joka kääntää ES6:en ja uudemmat Javascript-versiot selaimia paremmin tukevaan ES5 versioon. Omasta mielestäni nämä pienet haitat eivät kuitenkaan ole suuria ja hyödyt ovat niiden arvoisia.

Aiheena tyypitykset jakavat mielipiteitä. Tunnen ihmisiä, jotka eivät pahemmin TypeScriptistä välitä, ja heitä, jotka eivät mielellään tekisi koodausta ilman tyypityksiä. Tämä kirjoitus on oma mielipiteeni asiasta. Jätä omasi kommentteihin.

Haluaisitko liittyä joukkoomme? Etsimme uusia koodaajia tekemään ylläpidosta — tapahtui se sitten TypeScriptillä tai JavaScriptillä tai jollain ihan muulla — siistiä.

--

--