A magas szintű programozási nyelvek eleve adott típusokkal készültek. A nyelvi alaptípusokból további (felhasználó által definiált) típusokat lehet készíteni. Ezen típusok a meglévő típusok szűkítései (felsorolás típus, résztartomány-típus), vagy összetett algebrai adatszerkezetek is lehetnek (pl. struktúrák, vektorok, listák, …).