Generics — TypeScript

Generics memungkinkan fungsi/class bekerja dengan berbagai tipe tanpa kehilangan type safety: // Tanpa generics — harus pakai any (tidak aman) function pertama(

Generics memungkinkan fungsi/class bekerja dengan berbagai tipe tanpa kehilangan type safety:

// Tanpa generics — harus pakai any (tidak aman)
function pertama(arr: any[]): any { return arr[0]; }

// Dengan generics — type safe!
function pertama<T>(arr: T[]): T { return arr[0]; }

pertama<number>([1, 2, 3]);   // return type: number
pertama<string>(["a", "b"]);  // return type: string
pertama([true, false]);        // TS infer: boolean

Generic constraints:

function panjang<T extends { length: number }>(item: T): number {
  return item.length;
}
panjang("hello");    // OK — string punya .length
panjang([1, 2, 3]);  // OK — array punya .length
panjang(123);        // ❌ — number tidak punya .length

Generic interface:

interface ApiResponse<T> {
  data: T;
  status: number;
  message: string;
}

type UserResponse = ApiResponse<{ nama: string; umur: number }>;

Yang akan kamu pelajari