Tyyppiturvallisuus on osa tietokoneohjelmointia, joka auttaa estämään virheiden syntymisen, kun ohjelma käynnistyy. Jos tyyppiturvallisuus on heikkoa, on suuri todennäköisyys, että tulee joitain virheitä, jotka voivat aiheuttaa erilaisia virheitä. Yleisin tapa varmistaa, ettei näitä virheitä ilmene, on käyttää vahvaa koodausta. Vaikka monilla ohjelmointikielillä on luonnostaan toimintoja ohjelmoinnin uskottavuuden varmistamiseksi ja virheiden estämiseksi, huono koodaus voi tehdä näistä toiminnoista tehottomia. Ohjelmointikieli voi tarkistaa nämä virheet kahdella tavalla – staattiset tai dynaamiset – ja molemmat voivat olla tehokkaita.
Virheet ovat yleisiä ohjelmissa ja koodauksessa, ja tyyppiturvallisuuden vuoksi virhe ilmenee erityisesti erilaisista tietotyypeistä, joita ei ole säännelty asianmukaisesti. Virheitä voi esiintyä nimellisistä vakaviin, mutta useimmat ovat yleensä vakavia. Tämä voi sulkea ohjelman tai huono koodaus voi aiheuttaa pahempia ongelmia, jotka voivat tehdä koodauksesta hyödytöntä ja pirstoutunutta.
Tyyppiturvallisuuden varmistamiseksi on monia tapoja, mutta yksi helpoimmista ja yleisimmistä tavoista on käyttää vahvaa tyyppikoodausta. Toisin kuin pehmeämmät koodausmenetelmät, joiden avulla ohjelmointikieli voi määrittää virheellisen koodauksen väärin, vahva tyyppinen koodaus on hyvin suoraa. Vahva tyyppinen koodaus käyttää myös sääntöjä ja määräyksiä varmistaakseen, että koodaus ei ole määritelty väärin ja että virheitä on vähän.
Tyyppiturvallisuuden rikkominen voi aiheuttaa suuria ongelmia, joten monet ohjelmointikielet ovat ottaneet käyttöön ominaisuuksia näiden ongelmien testaamiseksi ja poistamiseksi tai ohjelmoijien varoittamiseksi. Ennen kuin ohjelmointi siirtyy ajonaikaan, kieli tarkistaa yleiset virheet ja yleensä keskeyttää ajonaikaisen käynnistyksen, jos virheitä havaitaan. Samaan aikaan nämä ominaisuudet voivat olla hyödyttömiä, jos ohjelmoija luo erittäin huonon koodauksen. Kieli ei kykene tunnistamaan yleisiä tyyppiturvallisuuden merkkejä, joten ohjelma käynnistyy virheestä huolimatta.
On olemassa kaksi tapaa havaita mahdolliset tyyppiturvallisuusongelmat, ja nämä koskevat vain ohjelmointikieliä, jotka automaattisesti tarkistavat virheet. Staattiset menetelmät yksinkertaisesti etsivät yleisiä merkkejä ongelmasta, kun ohjelma on käynnissä. Toinen menetelmä, dynaaminen, tarkistaa koodin perusteellisesti ja etsii kunkin koodauselementin roolin hiukkasohjelmassa. Sitten se etsii koko ohjelman läpi nähdäkseen, onko koodaukseen olemassa erityinen poikkeus, joka voi olla virhe, ja sitten se joko antaa sen ohittaa tai pysäyttää ohjelman käynnistyksen.