Tyyppijärjestelmät vertailussa: JavaScript ja TypeScript
Knuutinen, Toivo (2024)
Knuutinen, Toivo
2024
Tieto- ja sähkötekniikan kandidaattiohjelma - Bachelor's Programme in Computing and Electrical Engineering
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2024-05-07
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202405055324
https://urn.fi/URN:NBN:fi:tuni-202405055324
Tiivistelmä
JavaScript on yksi maailman suosituimmista ohjelmointikielistä, ja sitä käytetään erityisesti webkehityksessä melkein jokaisella verkkosivulla. Se mahdollistaakin web-sivuilla interaktiivisen käyttökokemuksen. Usein JavaScriptin ajatellaan kuitenkin vaikeuttavan ohjelmistokehitystä sen heikon tyyppijärjestelmän takia. Vaihtoehtona JavaScriptille on luotu TypeScript, joka sisältää staattiset tyyppitarkistukset sekä estää implisiittisiä tyyppimuunnoksia.
Tutkielma on toteutettu kirjallisuuskatsauksena ja sen tavoitteena on tutkia, miten TypeScript vaikuttaa JavaScriptiin verrattuna ohjelmistoihin ja ohjelmistojen kehitysprosessiin. Vertailussa käytetään kolmea ohjelmistokehityksen vertailukriteeriä: ohjelmointivirheiden esiintyvyyttä, ohjelmistojen ylläpidettävyyttäja ohjelmistojen kehitysnopeutta. Tutkielmassa verrataan sekä TypeScriptiä ja JavaScriptiä suoraan, että muita samat tyyppijärjestelmät omaavia kieliä.
Vaikka TypeScript tuo mukanaan monia hyötyjä, se ei poista kaikkia JavaScriptiin liittyviä ongelmia, erityisesti kun kyse on DOM-vuorovaikutuksesta web-ohjelmoinnissa. Tullaan tulokseen, että TypeScript ja staattiset tyyppijärjestelmät parantavat kuitenkin koodia ainakin ohjelmointivirheiden esiintyvyyden ja ohjelmistojen ylläpidettävyyden näkökulmista. Vaikuttaa myös siltä, että pienissä ohjelmointitehtävissä, ainakin niissä, joissa vaaditaan tyyppimuunnoksia, dynaamisilla tyyppijärjestelmillä kehitys on nopeampaa. Suuremmissa ohjelmistoissa tyyppimuunnoksien vaikutus kehitysnopeuteen voi kuitenkin jäädä muiden seikkojen varjoon. Havaittiin myös, että TypeScript nopeutti ohjelmistojen kehitystä isommissa ohjelmointitehtävissä.
Tutkimuksen perusteella TypeScript on hyvä vaihtoehto perinteiseen JavaScript-ohjelmistokehitykseen. TypeScript sallii sekä dynaamisen että staattisen tyypityksen vähittäisen tyypityksen kautta. Siksi se mahdollistaa pienempien prototyyppien kehittämiseen nopeasti dynaamisesti tyypitettynä, sallien kuitenkin hiljattain siirtymisen staattiseen tyypitykseen myöhemmin. JavaScriptin käyttö voi olla perusteltua pienissä sovelluksissa sen joustavuuden vuoksi, mutta muut tyypintarkastajien tarjoamat edut puoltavat TypeScriptin käyttöä myös pienissä projekteissa.
Tutkielma on toteutettu kirjallisuuskatsauksena ja sen tavoitteena on tutkia, miten TypeScript vaikuttaa JavaScriptiin verrattuna ohjelmistoihin ja ohjelmistojen kehitysprosessiin. Vertailussa käytetään kolmea ohjelmistokehityksen vertailukriteeriä: ohjelmointivirheiden esiintyvyyttä, ohjelmistojen ylläpidettävyyttäja ohjelmistojen kehitysnopeutta. Tutkielmassa verrataan sekä TypeScriptiä ja JavaScriptiä suoraan, että muita samat tyyppijärjestelmät omaavia kieliä.
Vaikka TypeScript tuo mukanaan monia hyötyjä, se ei poista kaikkia JavaScriptiin liittyviä ongelmia, erityisesti kun kyse on DOM-vuorovaikutuksesta web-ohjelmoinnissa. Tullaan tulokseen, että TypeScript ja staattiset tyyppijärjestelmät parantavat kuitenkin koodia ainakin ohjelmointivirheiden esiintyvyyden ja ohjelmistojen ylläpidettävyyden näkökulmista. Vaikuttaa myös siltä, että pienissä ohjelmointitehtävissä, ainakin niissä, joissa vaaditaan tyyppimuunnoksia, dynaamisilla tyyppijärjestelmillä kehitys on nopeampaa. Suuremmissa ohjelmistoissa tyyppimuunnoksien vaikutus kehitysnopeuteen voi kuitenkin jäädä muiden seikkojen varjoon. Havaittiin myös, että TypeScript nopeutti ohjelmistojen kehitystä isommissa ohjelmointitehtävissä.
Tutkimuksen perusteella TypeScript on hyvä vaihtoehto perinteiseen JavaScript-ohjelmistokehitykseen. TypeScript sallii sekä dynaamisen että staattisen tyypityksen vähittäisen tyypityksen kautta. Siksi se mahdollistaa pienempien prototyyppien kehittämiseen nopeasti dynaamisesti tyypitettynä, sallien kuitenkin hiljattain siirtymisen staattiseen tyypitykseen myöhemmin. JavaScriptin käyttö voi olla perusteltua pienissä sovelluksissa sen joustavuuden vuoksi, mutta muut tyypintarkastajien tarjoamat edut puoltavat TypeScriptin käyttöä myös pienissä projekteissa.
Kokoelmat
- Kandidaatintutkielmat [8907]