Interface mendefinisikan kontrak bentuk object yang bisa dipakai ulang:
interface User {
nama: string;
umur: number;
email?: string; // opsional
}
const budi: User = { nama: "Budi", umur: 17 };
Extending interface:
interface Admin extends User {
role: string;
permissions: string[];
}
Interface untuk fungsi:
interface Formatter {
(input: string): string;
}
const capitalize: Formatter = (s) => s.charAt(0).toUpperCase() + s.slice(1);
Interface bisa di-extend dan di-merge (declaration merging). Gunakan interface untuk object shapes, terutama yang akan di-extend.