Memahami Interface dan Type Alias di TypeScript: Panduan Lengkap untuk Pemula

By | 21 October 2025

Pada tutorial kali ini kita akan membahas Interface dan Type Alias di TypeScript sebagai Panduan Lengkap untuk Pemula. Dalam TypeScript, struktur dan konsistensi kode menjadi hal penting untuk menjaga keandalan program. Salah satu fitur unggulan yang membantu dalam hal ini adalah Interface TypeScript. Interface memungkinkan kita mendefinisikan bentuk dari sebuah objek agar setiap objek yang dibuat mengikuti struktur tertentu. Dengan demikian, pengembangan aplikasi menjadi lebih teratur dan mudah dipelihara.

TypeScript tidak hanya menyediakan interface, tetapi juga type alias, yang berfungsi untuk memberikan nama pada tipe data tertentu. Keduanya terlihat mirip, namun memiliki perbedaan mendasar dari sisi kemampuan dan fleksibilitasnya. Memahami perbedaan antara interface dan type alias akan membantumu menulis kode yang lebih bersih, efisien, dan mudah diperluas.

Apa Itu Interface?

Interface di TypeScript digunakan untuk mendefinisikan bentuk atau struktur dari sebuah objek. Dengan interface, kita bisa memastikan bahwa objek memiliki properti dan tipe data yang sesuai dengan yang diharapkan.

Contoh dasar penggunaan interface:

interface User {
  name: string;
  age: number;
  isActive: boolean;
}

const user1: User = {
  name: "Arvian",
  age: 25,
  isActive: true
};

Pada contoh di atas, setiap objek User harus memiliki properti name, age, dan isActive dengan tipe data yang sesuai. Jika ada properti yang hilang atau salah tipe, TypeScript akan memberikan peringatan saat kompilasi.

Membuat dan Menggunakan Interface

Interface juga dapat digunakan untuk mendefinisikan fungsi, array, atau struktur kompleks lainnya. Misalnya, interface untuk fungsi:

interface Calculator {
  (x: number, y: number): number;
}

const tambah: Calculator = (a, b) => a + b;
const kali: Calculator = (a, b) => a * b;

Selain itu, interface juga dapat digunakan di dalam class untuk mendefinisikan kontrak yang harus dipatuhi oleh class tersebut:

interface Animal {
  name: string;
  speak(): void;
}

class Dog implements Animal {
  constructor(public name: string) {}
  
  speak(): void {
    console.log(`${this.name} menggonggong!`);
  }
}

Dengan menggunakan implements, TypeScript memastikan bahwa class Dog memenuhi semua properti dan metode dari interface Animal.

Apa Itu Type Alias?

Type alias digunakan untuk memberikan nama pada tipe data apa pun — bukan hanya objek. Dengan type alias, kita dapat mendefinisikan tipe data primitif, union, intersection, maupun tuple.

Contoh penggunaan type alias:

type ID = string | number;
type Status = "active" | "inactive" | "banned";

type Product = {
  id: ID;
  name: string;
  price: number;
  status: Status;
};

const item: Product = {
  id: 101,
  name: "Keyboard",
  price: 300000,
  status: "active"
};

Keunggulan utama type alias adalah fleksibilitasnya. Kamu bisa menggunakannya untuk berbagai jenis tipe data, bukan hanya objek.

Perbedaan Type vs Interface

Meskipun interface dan type alias tampak mirip, keduanya memiliki perbedaan penting dalam hal kemampuan dan penggunaannya:

Aspek Interface Type Alias
Dapat di-extend Ya Ya (dengan &)
Dapat di-merge Ya Tidak
Cocok untuk Struktur objek dan class Tipe kompleks (union, tuple, primitive)
Re-deklarasi Bisa digabung otomatis Tidak bisa digabung

Contoh perbedaan sederhana:

// Interface bisa di-merge
interface User {
  name: string;
}
interface User {
  age: number;
}
const person: User = { name: "Budi", age: 30 };

// Type tidak bisa di-merge
type Car = { brand: string };
// type Car = { color: string }; // ❌ Error

Interface bisa digabung (merged) jika dideklarasikan ulang, sementara type tidak mendukung hal itu.

Extends dan Merging dalam Interface

Interface mendukung konsep extends, yaitu mewarisi struktur dari interface lain. Ini sangat berguna untuk membuat struktur data yang kompleks dengan mudah.

interface Person {
  name: string;
  age: number;
}

interface Employee extends Person {
  employeeId: string;
  department: string;
}

const staff: Employee = {
  name: "Rina",
  age: 28,
  employeeId: "EMP001",
  department: "Finance"
};

Selain extends, interface juga mendukung merging, di mana dua interface dengan nama yang sama akan digabungkan secara otomatis oleh TypeScript. Hal ini sangat berguna untuk memperluas tipe tanpa mengubah definisi asli.

Kesimpulan

Interface TypeScript dan type alias adalah dua fitur penting yang membantu pengembang membuat kode yang terstruktur dan mudah dikelola. Interface sangat cocok untuk mendefinisikan struktur objek atau kontrak class, sementara type alias lebih fleksibel untuk tipe data kompleks seperti union, intersection, atau tuple.

Dengan memahami perbedaan, cara penggunaan, serta fitur extends dan merging, kamu dapat memanfaatkan kekuatan penuh TypeScript untuk membuat kode yang lebih aman, terorganisir, dan mudah dikembangkan di proyek besar maupun kecil.