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 :)

Artikel Lainnya

Beberapa artikel rekomendasi lainnya untuk menambah pengetahuan.

1
Tutorial Laravel Rest API - #3 - Membuat Module Register
Artikel ini merupakan series dari Tutorial Authentication Dengan Laravel Sanctum dan Unit Testing, disini kita belajar membuat module registrasi selain membuat rest api kita juga menuliskan sebuah unit test untuk module tersebut.
2
Tutorial Inertia Roles & Permissions - #12 - Membuat Module Permission Dengan Inertia React
Artikel ini merupakan series dari Tutorial Laravel Inertia Roles & Permissions, disini kita akan membuat sebuah module permission dengan inertia react.
3
Tutorial Inertia Roles & Permissions - #13 - Membuat Module Role Dengan Inertia React
Artikel ini merupakan series dari Tutorial Laravel Inertia Roles & Permissions, disini kita akan membuat sebuah module role dengan inertia react.
4
Tutorial Laravel Rest API - #1 - Installasi Laravel Dengan Composer
Artikel ini merupakan series dari Tutorial Authentication Dengan Laravel Sanctum dan Unit Testing, disini kita akan mulai melakukan installasi project laravel kita dari awal menggunakan composer.
5
Tutorial Laravel Livewire - #1 - Project Overview
Artikel ini merupakan series dari Tutorial Laravel Livewire Study Case Point Of Sales, disini kita akan bahasa teknologi apa saja yang kita gunakan dan scope dari project yang akan kita bangun.
6
Tutorial Inertia Roles & Permissions - #7 - Membuat Share Data Global Inertia
Artikel ini merupakan series dari Tutorial Laravel Inertia Roles & Permissions, disini kita akan belajar membuat sebuah data yang dapat diakses di semua halaman menggunakan inertia.

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.