Belajar Typescript Dasar - #5 - Interface Dalam Typescript

Artikel ini merupakan series dari Belajar Typescript Dasar, disini kita akan belajar mengenai jenis - jenis interface yang ada didalam typescript.

Rafi Taufiqurrahman
Dipublish 12/03/2025

Pendahuluan

Pada artikel kali ini, kita akan membahas interface dalam TypeScript, yang merupakan salah satu fitur paling penting dan sering digunakan dalam pengembangan aplikasi TypeScript.

Interface digunakan untuk mendefinisikan struktur objek, memastikan bahwa objek memiliki properti dan tipe data yang sesuai. Dengan interface, kita bisa menulis kode yang lebih terstruktur, mudah dipahami, dan aman dari error.

Apa Itu Interface?

Interface adalah sebuah kontrak atau blueprint yang menentukan struktur suatu objek. Dengan menggunakan interface, kita bisa memastikan bahwa objek yang dibuat memiliki properti yang benar dengan tipe data yang sesuai.

Konsep Kegunaan
Interface Object Menentukan struktur objek
Properti Opsional Membuat properti yang tidak wajib diisi
Readonly Property Melindungi properti dari perubahan
Interface untuk Function Memastikan function sesuai dengan kontrak
Interface Array Memastikan elemen dalam array memiliki tipe yang sesuai
Extends Membuat interface berdasarkan interface lain
Intersection Menggabungkan beberapa interface

Interface dengan Properti Opsional

Kita bisa membuat properti dalam interface yang opsional (boleh ada atau tidak) dengan menambahkan tanda tanya (?).

interface Product {
    id: number;
    name: string;
    price: number;
    description?: string; // Properti opsional
}

const product1: Product = {
    id: 1,
    name: "Laptop",
    price: 10000000
};

const product2: Product = {
    id: 2,
    name: "Mouse",
    price: 200000,
    description: "Mouse gaming RGB"
};

console.log(product1);
console.log(product2);

Pada kode diatas, Kita bisa membuat objek Product dengan atau tanpa properti description. Interface dengan properti opsional berguna untuk skenario di mana beberapa properti tidak selalu diperlukan.

Interface dengan Readonly Property

Jika kita ingin sebuah properti dalam interface tidak bisa diubah setelah objek dibuat, kita bisa menggunakan readonly.

interface Car {
    readonly id: number;
    brand: string;
    model: string;
}

const myCar: Car = {
    id: 1,
    brand: "Toyota",
    model: "Corolla"
};

myCar.brand = "Honda"; // ✅ Boleh diubah
// myCar.id = 2; // ❌ Error! Properti id bersifat readonly

console.log(myCar);

Pada kode diatas, readonly mencegah perubahan pada properti tertentu setelah objek dibuat, biasanya berguna untuk ID unik, timestamp, atau nilai yang tidak boleh diubah.

Interface untuk Function

Interface tidak hanya bisa digunakan untuk objek, tetapi juga untuk mendefinisikan struktur function.

interface Greet {
    (name: string): string;
}

const sayHello: Greet = (name) => {
    return `Hello, ${name}!`;
};

console.log(sayHello("Andi")); // Output: Hello, Andi!

Pada kode diatas, kita membuat sebuah interface untuk memastikan function memiliki parameter dan return value yang benar.

Interface untuk Array

Kita juga bisa menggunakan interface untuk mendefinisikan struktur array.

interface NumberArray {
    [index: number]: number;
}

const angka: NumberArray = [10, 20, 30, 40];

console.log(angka[1]); // Output: 20

Pada kode diatas, kita memastikan bahwa array hanya berisi tipe data tertentu (dalam contoh ini, hanya angka).

Interface dengan Extends

Kita bisa membuat interface baru berdasarkan interface lain dengan menggunakan extends.

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

interface Employee extends Person {
    jobTitle: string;
    salary: number;
}

const emp: Employee = {
    name: "Rina",
    age: 30,
    jobTitle: "Software Engineer",
    salary: 15000000
};

console.log(emp);

Pada kode daitas, kita membuat sebuah interface person dan employee, kemudian kita wariskan properti yang ada didalam object person kedalam employee.

Interface dengan Intersection

Selain extends, kita juga bisa menggabungkan dua atau lebih interface menggunakan operator &.

interface HasName {
    name: string;
}

interface HasAge {
    age: number;
}

type Person = HasName & HasAge;

const person: Person = {
    name: "Dewi",
    age: 25
};

console.log(person);

Pada kode diatas, kita menggabungkan beberapa interface menjadi satu tipe baru, dengan operator &.

Interface vs Type Alias

Dalam TypeScript, selain interface, kita juga bisa menggunakan type untuk mendefinisikan tipe data.

Fitur Interface Type Alias
Bisa diperluas dengan extends Ya Tidak
Bisa digabung dengan & Ya Ya
Bisa digunakan untuk function dan array Ya Ya

Kapan menggunakan interface?

  • Jika kita ingin mendefinisikan struktur objek yang bisa diwarisi.
  • Jika kita ingin kode lebih terstruktur dan scalable.

Kapan menggunakan type alias?

  • Jika kita ingin membuat union type (string | number).
  • Jika kita ingin mendefinisikan tuple atau primitive types.

Penutup

Pada artikel berikutnya, kita akan belajar bersama - sama tentang Class dalam Typescript. Semoga bermanfaat, terima kasih :)

Series Artikel

Berikut ini daftar series artikel dari Belajar Typescript Dasar

JurnalKoding

Mulai asah skill dengan berbagai macam teknologi - teknologi terbaru seperti Laravel, React, Vue, Inertia, Tailwind CSS, dan masih banyak lagi.

© 2025 JurnalKoding, Inc. All rights reserved.