TypeScript - Mengembangkan Antarmuka

Hai, bintang coding masa depan! Hari ini, kita akan masuk ke dunia menarik TypeScript dan belajar bagaimana mengembangkan antarmuka-nya. Pada akhir pelajaran ini, Anda akan menciptakan antarmuka yang kuat dan fleksibel seperti seorang pro. Jadi, ambil minuman favorit Anda, rias kenyang, dan mari kita mulai perjalanan kita!

TypeScript - Extending Interfaces

Sintaks

Sebelum kita masuk ke hal-hal kecil, mari kita mulai dari dasar. Dalam TypeScript, mengembangkan antarmuka adalah hal yang mudah seperti menggunakan kata kunci extends. Berikut adalah sintaks umum:

interface ChildInterface extends ParentInterface {
// Properti atau metode tambahan
}

Pertimbangkan hal ini seperti pewarisan dalam keluarga kerajaan. Antarmuka anak "mewarisi" semua properti dan metode dari antarmuka induk, dan juga dapat menambahkan fitur uniknya sendiri.

Mengembangkan Antarmuka Tunggal

Mari kita mulai dengan contoh sederhana. Bayangkan kita membuat permainan tentang makhluk ajaib. Kita akan mulai dengan antarmuka dasar Creature:

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

Sekarang, katakanlah kita ingin membuat jenis makhluk khusus - seekor naga! Kita dapat mengembangkan antarmuka Creature untuk menciptakan antarmuka Dragon:

interface Dragon extends Creature {
breatheFire: () => void;
wingspan: number;
}

Dalam contoh ini, Dragon mewarisi properti name dan age dari Creature, dan menambahkan metode breatheFire serta properti wingspan.

Lihatlah bagaimana kita dapat menggunakannya:

const smaug: Dragon = {
name: "Smaug",
age: 1000,
wingspan: 200,
breatheFire: () => console.log("Roar! ?")
};

console.log(smaug.name);  // Output: Smaug
smaug.breatheFire();  // Output: Roar! ?

Seperti yang Anda lihat, smaug memiliki semua properti dari Creature, ditambah fitur khusus naga.

Mengembangkan Beberapa Antarmuka

Apa bila naga kita tidak hanya seekor makhluk, tetapi juga seorang penjaga harta? Dalam TypeScript, kita dapat mengembangkan beberapa antarmuka! mari kita buat antarmuka TreasureKeeper dan kembangkan keduanya:

interface TreasureKeeper {
treasureCount: number;
addTreasure: (item: string) => void;
}

interface DragonLord extends Creature, TreasureKeeper {
breatheFire: () => void;
wingspan: number;
}

Sekarang DragonLord adalah seekor makhluk yang dapat meniup api dan menyimpan harta. Menarik, kan?

const falkor: DragonLord = {
name: "Falkor",
age: 500,
wingspan: 150,
treasureCount: 1000,
breatheFire: () => console.log("Whoosh! ?"),
addTreasure: (item) => console.log(`Added ${item} to the hoard!`)
};

falkor.addTreasure("Golden Crown");  // Output: Added Golden Crown to the hoard!

Menambahkan Properti ke Antarmuka Yang Ada

kadang-kadang, Anda mungkin ingin menambahkan properti ke antarmuka yang sudah ada. TypeScript memungkinkan Anda melakukan ini dengan mendeklarasikan kembali antarmuka dengan properti baru:

interface Creature {
species: string;
}

const unicorn: Creature = {
name: "Sparkles",
age: 100,
species: "Unicorn"
};

Sekarang Creature memiliki properti name, age, dan species. Teknik ini disebut "penggabungan deklarasi".

Membuat Antarmuka Komposit

Anda juga dapat menciptakan antarmuka baru dengan menggabungkan antarmuka yang sudah ada menggunakan tipe silang:

interface Flyer {
fly: () => void;
}

interface Swimmer {
swim: () => void;
}

type FlyingFish = Flyer & Swimmer;

const nemo: FlyingFish = {
fly: () => console.log("I'm flying! ?✈️"),
swim: () => console.log("Just keep swimming! ?‍♂️")
};

nemo.fly();  // Output: I'm flying! ?✈️
nemo.swim();  // Output: Just keep swimming! ?‍♂️

Menimpa Properti dan Metode

Saat mengembangkan antarmuka, Anda dapat menimpa properti dan metode dari antarmuka induk. Ini berguna saat Anda ingin lebih spesifik tentang properti atau metode dalam antarmuka anak:

interface Animal {
makeSound: () => void;
}

interface Cat extends Animal {
makeSound: () => string;  // Tipe kembalian yang lebih spesifik
}

const kitty: Cat = {
makeSound: () => "Meow!"
};

console.log(kitty.makeSound());  // Output: Meow!

Dalam contoh ini, kita menimpa metode makeSound agar mengembalikan string bukan void.

Berikut adalah tabel yang menggabungkan metode yang kita pelajari:

Metode Deskripsi
Mengembangkan Antarmuka Tunggal Gunakan kata kunci extends untuk mewarisi dari satu antarmuka
Mengembangkan Beberapa Antarmuka Gunakan extends dengan antarmuka yang dipisahkan oleh koma
Menambahkan Properti ke Antarmuka Yang Ada Deklarasikan kembali antarmuka dengan properti baru
Membuat Antarmuka Komposit Gunakan tipe silang (&) untuk menggabungkan antarmuka
Menimpa Properti dan Metode Redefinisikan properti atau metode dalam antarmuka anak

Dan begitulah, teman-teman! Anda telah meningkatkan keterampilan TypeScript Anda dengan memahami ekstensi antarmuka. Ingat, antarmuka adalah seperti blok LEGO - Anda dapat menggabungkannya dalam banyak cara untuk membangun struktur yang komplex dan aman dalam kode Anda.

Saat Anda terus melanjutkan perjalanan coding Anda, Anda akan menemukan bahwa teknik ini akan membantu Anda menciptakan kode yang lebih fleksibel, dapat digunakan kembali, dan mudah dipelihara. Jadi, maju dan gunakan antarmuka dengan kepercayaan! Selamat coding! ??‍??‍?

Credits: Image by storyset