Generics
Bayangkan Anda ingin membuat fungsi yang bisa menerima tipe data apa saja, tapi tetap aman (bukan any).
Masalah (Tanpa Generics)
Kita terpaksa bikin fungsi dobel atau pakai any.
function kembalikanAngka(val: number): number {
return val;
}
function kembalikanKata(val: string): string {
return val;
}
// Kalau pakai any, kita kehilangan fitur cek error
function kembalikanApaAja(val: any): any {
return val;
}
Solusi (Pakai Generics <T>)
Kita gunakan tanda <T> (singkatan dari Type) sebagai placeholder. Nanti TS akan menebak sendiri tipenya saat dipanggil.
function kembalikan<T>(val: T): T {
return val;
}
// Saat dipakai, <T> berubah jadi tipe data aslinya
const data1 = kembalikan<number>(100); // T jadi number
const data2 = kembalikan<string>("Halo"); // T jadi string
Studi Kasus: React useState
Nanti di React, Anda akan sering melihat ini:
// State bisa berupa User ATAU null (kosong)
const [user, setUser] = useState<User | null>(null);