Utility Types yang Wajib Diketahui Setiap Developer TypeScript
Artikel penutup Series 1 ini ngebahas kumpulan utility types bawaan TypeScript yang paling sering dipake di proyek nyata, kayak `Partial`, `Required`, `Pick`, `Omit`, `Record`, dan `ReturnType`. Setiap utility type dijelasin lewat use case konkret, misalnya `Partial` buat bikin form update yang field-nya opsional, `Omit` buat bikin DTO dari model database, dan `Record` buat bikin mapping objek yang type safe. Di akhir artikel ada juga pengenalan singkat cara bikin utility type sendiri, sebagai jembatan menuju Series 2 yang bahas type level programming lebih dalam.
Timur Dian Radha Sejati
Founder SejatiDimedia•25 September 2026•5 menit baca
Silabus Seri Rekayasa
TypeScript Fundamentals
Series ini dirancang untuk membangun fondasi TypeScript yang kuat bagi pembaca yang baru mulai belajar atau ingin memperkuat pemahaman dasarnya. Dimulai dari alasan mendasar kenapa TypeScript layak dipelajari dibanding JavaScript murni, lanjut ke konsep-konsep inti seperti perbedaan any, unknown, dan never, cara kerja type inference, union dan intersection type, generics, hingga utility types yang paling sering dipakai di proyek nyata. Setiap artikel ditulis dengan pendekatan step by step, disertai contoh kode dan studi kasus dunia nyata, sehingga pembaca tidak hanya tahu "apa" tapi juga paham "kenapa" di balik setiap konsep. Series ini menjadi pondasi sebelum masuk ke topik yang lebih advance seperti type level programming dan pola arsitektur TypeScript di Series berikutnya.
Utility Types yang Wajib Diketahui Setiap Developer TypeScript
5mSedang Dibaca
Kalau kamu udah sering nulis interface atau type di TypeScript, pasti pernah ngalamin situasi kayak gini. Kamu punya satu interface utama, terus butuh versi lain dari interface itu yang dikit beda, misalnya semua field-nya jadi opsional, atau ada beberapa field yang dihilangin. Daripada nulis interface baru dari nol dan duplikasi banyak kode, TypeScript udah nyediain kumpulan utility types buat nanganin kasus-kasus umum kayak gini.
Di artikel ini kita bakal bahas enam utility types yang paling sering kepake di proyek nyata.
Partial, Bikin Semua Properti Jadi Opsional
Bayangin kamu punya interface
PLAINTEXT Snippetplaintext
1
User
1 baris•4 chars
UTF-8•Spaces: 4
:
index.tstypescript
1
interfaceUser{
2
id:string;
3
nama:string;
4
email:string;
5
}
5 baris•65 chars
UTF-8•Spaces: 4
Sekarang kamu mau bikin fungsi update, di mana user cuma perlu ngirim field yang mau diubah aja, gak wajib semua.
Ini berguna banget kalau bentuk data yang di-return sebuah fungsi cukup kompleks dan kemungkinan bakal berubah di masa depan. Daripada nulis interface terpisah yang harus kamu update manual tiap kali fungsi
PLAINTEXT Snippetplaintext
1
buatUser
1 baris•8 chars
UTF-8•Spaces: 4
berubah,
PLAINTEXT Snippetplaintext
1
ReturnType
1 baris•10 chars
UTF-8•Spaces: 4
bakal selalu ngikutin bentuk return value yang sebenarnya, otomatis.
Bonus, Ngintip Cara Bikin Utility Type Sendiri
Semua utility types di atas sebenarnya cuma dibikin dari kombinasi fitur type level yang udah ada di TypeScript, kayak mapped types dan conditional types. Sekadar ngintip dikit, ini kira-kira gimana
PLAINTEXT Snippetplaintext
1
Partial
1 baris•7 chars
UTF-8•Spaces: 4
sebenarnya diimplementasiin di balik layar:
index.tstypescript
1
typePartialSendiri<T>={
2
[KinkeyofT]?:T[K];
3
};
3 baris•54 chars
UTF-8•Spaces: 4
PLAINTEXT Snippetplaintext
1
[K in keyof T]
1 baris•14 chars
UTF-8•Spaces: 4
di sini artinya "buat tiap key
PLAINTEXT Snippetplaintext
1
K
1 baris•1 chars
UTF-8•Spaces: 4
yang ada di
PLAINTEXT Snippetplaintext
1
T
1 baris•1 chars
UTF-8•Spaces: 4
", dan tanda
PLAINTEXT Snippetplaintext
1
?
1 baris•1 chars
UTF-8•Spaces: 4
bikin tiap key itu jadi opsional. Jangan khawatir kalau sintaks ini masih kerasa asing, karena ini justru topik utama yang bakal kita bahas mendalam di Series 2, Type-Level Programming. Series 1 ini sengaja fokus ke cara pakai utility types yang udah jadi, biar kamu punya bekal praktis dulu sebelum masuk ke bagian yang lebih dalam soal gimana semuanya itu dibikin.
Kesimpulan
Utility types itu ibarat perkakas siap pakai yang bikin hidup kamu jauh lebih gampang pas kerja sama tipe data di TypeScript.
PLAINTEXT Snippetplaintext
1
Partial
1 baris•7 chars
UTF-8•Spaces: 4
buat bikin semua properti opsional,
PLAINTEXT Snippetplaintext
1
Required
1 baris•8 chars
UTF-8•Spaces: 4
buat kebalikannya,
PLAINTEXT Snippetplaintext
1
Pick
1 baris•4 chars
UTF-8•Spaces: 4
buat ambil sebagian properti,
PLAINTEXT Snippetplaintext
1
Omit
1 baris•4 chars
UTF-8•Spaces: 4
buat buang sebagian properti,
PLAINTEXT Snippetplaintext
1
Record
1 baris•6 chars
UTF-8•Spaces: 4
buat bikin mapping objek yang type safe, dan
PLAINTEXT Snippetplaintext
1
ReturnType
1 baris•10 chars
UTF-8•Spaces: 4
buat nyolong tipe dari return value fungsi. Begitu kamu terbiasa pake keenamnya, kamu bakal jarang banget nulis interface duplikat cuma buat variasi kecil dari tipe yang udah ada.
Dan dengan ini, kita udah nyelesain seluruh Series 1, TypeScript Fundamentals. Dari alasan kenapa TypeScript worth dipelajari, bedanya
PLAINTEXT Snippetplaintext
1
any
1 baris•3 chars
UTF-8•Spaces: 4
,
PLAINTEXT Snippetplaintext
1
unknown
1 baris•7 chars
UTF-8•Spaces: 4
,
PLAINTEXT Snippetplaintext
1
never
1 baris•5 chars
UTF-8•Spaces: 4
, cara kerja type inference, union dan intersection type, generics, sampai utility types, kamu sekarang udah punya pondasi yang cukup kuat buat lanjut ke topik yang lebih dalam. Di Series 2 nanti, kita bakal masuk ke Type-Level Programming, mulai dari conditional types, template literal types, mapped types, sampai branded types, buat kamu yang pengen ngerti gimana sebenarnya "mesin" di balik semua utility types yang udah kamu pake selama ini.
Software engineer dan konsultan sistem di SejatiDimedia. Berfokus pada perancangan arsitektur berkinerja tinggi, refactoring backend skala enterprise, hingga pengembangan aplikasi mobile, web modern dan integrasi AI.