W językach programowania typ pierwszoklasowy (ang. first-class type), jak również obiekt pierwszoklasowy (ang. first-class object) czy ogólniej jednostka pierwszej kategorii (ang. first-class citizen) jest konstruktem służącym do przechowywania danych, na którym możemy wykonywać takie same operacje, jak na danych innych, wbudowanych typów, takich jak np. liczby czy ciągi znaków.
Obiekt typu pierwszoklasowego ma więc następujące właściwości:
Wobec powyższych musi mieć takie same właściwości, jak dane typów wbudowanych[1].
W językach silnie obiektowo zorientowanych, takich jak Python, każda klasa wartości jest typem pierwszoklasowym (liczby, klasy, łańcuchy znaków, listy, funkcje) implementowanym na bazie obiektowego systemu typów. Ciekawym przykładem są również dialekty języka Lisp, a także inne języki homoikoniczne (np. Prolog, SNOBOL czy Rebol), gdzie jednostkami pierwszej kategorii są nawet wyrażenia kodu źródłowego. Otwiera to drogę do rozszerzania języków o nowe konstrukcje i budowania zagnieżdżonych interpreterów języków dziedzinowych.
Jeżeli w danym języku funkcje są jednostkami pierwszej kategorii (występuje tzw. typ funkcyjny), można w nim definiować funkcje wyższego rzędu (operujące na innych funkcjach). Jest to cecha języków funkcyjnych[2].