TypeScript - Jenis Persilangan: Panduan Ramah untuk Pemula
Hai teman, bakal bintang pemrograman masa depan! Hari ini, kita akan mengemban perjalanan menarik ke dunia TypeScript dan menjelajahi konsep yang menarik称为 Jenis Persilangan (Intersection Types). Jangan khawatir jika Anda baru saja memulai pemrograman - saya akan menjadi panduan ramah Anda, dan kita akan mengambil langkah ini satu demi satu. Jadi, sajikan minuman favorit Anda, duduk nyaman, dan mari kita masuk ke dalamnya!
Apa Itu Jenis Persilangan?
Sebelum kita masuk ke detailnya, mari kita mulai dengan analogi sederhana. Bayangkan Anda di toko es krim, dan Anda tidak bisa memutuskan antara coklat dan vanila. Apa bila saya katakan Anda bisa mendapatkan kedua rasa itu dalam satu sendok? Itu seperti Jenis Persilangan di TypeScript - mereka memungkinkan Anda untuk menggabungkan beberapa jenis menjadi satu!
Dalam TypeScript, Jenis Persilangan menciptakan jenis baru dengan menggabungkan jenis yang sudah ada. Itu seperti mengatakan, "Saya ingin jenis yang memiliki semua properti Jenis A DAN semua properti Jenis B." Kata kunci di sini adalah "DAN" - jenis yang dihasilkan akan memiliki semua fitur jenis yang digabungkan.
Sintaks
Sekarang, mari kita lihat bagaimana kita menulis Jenis Persilangan di TypeScript. Sintaksnya mengejutkan mudah - kita gunakan simbol ampersand (&
) untuk menggabungkan jenis.Ini adalah struktur dasar:
type NewType = TypeA & TypeB;
Itu sungguh mudah! Kita mengatakan ke TypeScript, "Hey, buat jenis baru yang memiliki segala sesuatu dari TypeA dan segala sesuatu dari TypeB."
Contoh
Mari kita masuk ke beberapa contoh untuk melihat bagaimana ini bekerja dalam praktek. Saya selalu menemukan bahwa konteks dunia nyata membantu konsep ini untuk menetap, jadi mari kita bayangkan kita sedang membangun permainan!
Contoh 1: Membuat Superhero
// Definisikan jenis Character dasar
type Character = {
name: string;
health: number;
};
// Definisikan jenis Superpower
type Superpower = {
power: string;
strength: number;
};
// Buat jenis Superhero menggunakan Persilangan
type Superhero = Character & Superpower;
// Mari kita buat superhero!
const ironMan: Superhero = {
name: "Tony Stark",
health: 100,
power: "High-Tech Suit",
strength: 85
};
console.log(ironMan);
Dalam contoh ini, kita telah membuat jenis Superhero
dengan menggabungkan Character
dan Superpower
. Objek ironMan
sekarang memiliki properti dari jenis yang digabungkan. Keren, kan?
Contoh 2: Menggabungkan Jenis yang Berbeda
Jenis Persilangan tidak terbatas hanya untuk objek. Mari kita lihat bagaimana kita dapat menggabungkan jenis yang berbeda:
type Stringifiable = string | number | boolean;
type Loggable = {
log(): void;
};
type StringifiableLoggable = Stringifiable & Loggable;
function processValue(value: StringifiableLoggable) {
console.log(value.toString());
value.log();
}
// Mari kita buat objek yang memuaskan jenis ini
const myValue: StringifiableLoggable = {
valueOf() { return 42; },
log() { console.log("Logged!"); }
};
processValue(myValue);
Di sini, kita telah menggabungkan jenis gabungan (Stringifiable
) dengan jenis seperti interface (Loggable
). Jenis StringifiableLoggable
harus memiliki keduanya kemampuan untuk dikonversi menjadi string DAN memiliki metode log
.
Jenis Persilangan Adalah Asosiatif dan Komutatif
Sekarang, mari kita bicarakan tentang dua properti penting Jenis Persilangan: asosiatif dan komutatif. Jangan biarkan kata besar ini menakutkan Anda - mereka sebenarnya konsep yang sederhana!
Asosiatif
Asosiatif berarti urutan penggabungan jenis tidak penting saat menggunakan beberapa operator &
. Dalam kata lain:
type A = { a: string };
type B = { b: number };
type C = { c: boolean };
type ABC1 = A & (B & C);
type ABC2 = (A & B) & C;
// ABC1 dan ABC2 adalah ekivalen!
Apakah Anda menggabungkan A dengan (B & C) atau (A & B) dengan C, Anda akan mendapatkan hasil yang sama. Itu seperti mengatakan (1 + 2) + 3 adalah sama dengan 1 + (2 + 3) dalam matematika.
Komutatif
Komutatif berarti urutan jenis dalam persilangan tidak penting. Misalnya:
type AB = A & B;
type BA = B & A;
// AB dan BA adalah ekivalen!
Tidak penting Anda menulis A & B atau B & A - Anda akan mendapatkan jenis gabungan yang sama di kedua kasus. Pergunakan seperti mencampur cat biru dan kuning - Anda mendapatkan hijau apakah Anda menambahkan biru ke kuning atau kuning ke biru.
Penggunaan Praktis Jenis Persilangan
Sekarang kita mengerti dasar-dasar, mari kita lihat beberapa konteks dunia nyata di mana Jenis Persilangan bisa sangat membantu:
1. Menggabungkan Interface
interface Printable {
print(): void;
}
interface Loggable {
log(): void;
}
type PrintableLoggable = Printable & Loggable;
class MyClass implements PrintableLoggable {
print() { console.log("Printing..."); }
log() { console.log("Logging..."); }
}
Di sini, kita telah membuat jenis baru yang menggabungkan dua interface. Setiap objek jenis PrintableLoggable
harus mengimplementasikan kedua metode print()
dan log()
.
2. Menambah Properti ke Jenis Yang Ada
type User = {
id: number;
name: string;
};
type UserWithEmail = User & { email: string };
const user: UserWithEmail = {
id: 1,
name: "John Doe",
email: "[email protected]"
};
Dalam contoh ini, kita telah menambah properti email
ke jenis User
menggunakan Jenis Persilangan.
Pitfall Umum dan Tips
Seperti dengan setiap fitur yang kuat, ada beberapa hal untuk dipertimbangkan saat menggunakan Jenis Persilangan:
-
Properti Konflik: Jika Anda menggabungkan jenis dengan properti yang sama namun jenis berbeda, TypeScript akan mencoba untuk menyelaraskan mereka, yang kadang-kadang dapat menyebabkan hasil yang tak terduga.
-
Jenis Never: Jika Anda menggabungkan jenis yang tidak kompatibel, Anda mungkin akan mendapatkan jenis
never
, yang mewakili jenis yang tidak dapat terjadi. -
Inferensi Jenis: TypeScript cukup cerdas tentang inferensi jenis, tetapi kadang-kadang Anda mungkin perlu menetapkan jenis variabel secara eksplisit saat menggunakan penggabungan jenis kompleks.
Kesimpulan
Selamat! Anda telah mengambil langkah pertama ke dunia Jenis Persilangan di TypeScript. Kita telah melihat dasar-dasar, melihat beberapa contoh, dan bahkan mengeksplorasi beberapa konsep tingkat lanjut. Ingat, seperti setiap keterampilan pemrograman, memahami Jenis Persilangan memerlukan latihan. Jangan takut untuk mencoba dan mencoba kombinasi yang berbeda dalam proyek Anda sendiri.
Sebagai penutup, ini adalah tabel ringkasan metode utama yang kita diskusikan:
Metode | Deskripsi |
---|---|
& |
Operator ampersand digunakan untuk menciptakan Jenis Persilangan |
type NewType = TypeA & TypeB |
Sintaks dasar untuk menciptakan Jenis Persilangan |
implements |
Kata kunci digunakan saat kelas mengimplementasikan Jenis Persilangan |
Tetap kode, tetap belajar, dan yang paling penting, bersenang-senang! Sistem jenis TypeScript adalah alat yang kuat, dan Jenis Persilangan adalah salah satu dari banyak fitur yang membuatnya sangat fleksibel. Selamat berkoding, bakal maestro TypeScript!
Credits: Image by storyset