# TypeScript - Type Inference: A Beginner's Guide
Hai teman-teman, sang pelajar coding masa depan! Hari ini, kita akan memulai perjalanan menarik ke dalam dunia TypeScript dan mengenal salah satu fitur yang paling menarik: Type Inference. Jangan khawatir jika Anda baru belajar pemrograman; saya akan menjadi panduan teman Anda, dan kita akan mengambil langkah ini secara bertahap. Pada akhir panduan ini, Anda akan terkejut betapa cerdas TypeScript bisa menjadi!
## Apa Itu Type Inference?
Sebelum kita mendalam, mari kita pahami apa arti type inference. Bayangkan Anda memiliki seorang teman magis yang bisa menebak apa yang Anda pikirkan hanya dengan melihat Anda. Itu seperti apa yang TypeScript lakukan dengan kode Anda. TypeScript melihat kode Anda dan mencoba menentukan jenis yang seharusnya digunakan oleh variabel Anda, tanpa Anda perlu memberitahunya secara eksplisit. Menarik, kan?
Sekarang, mari kita jelajahi berbagai cara TypeScript menggunakan kekuatan penginferenceannya!
## Inisialisasi Variabel atau Anggota
### Dasar-Dasar
Ketika Anda membuat variabel dan memberikan nilai segera, TypeScript bisa menentukan jenis variabel itu harusnya apa. Mari kita lihat beberapa contoh:
```typescript
let myName = "Alice";
let myAge = 25;
let isStudent = true;
Dalam kode ini, TypeScript menyimpulkan bahwa:
-
myName
adalahstring
-
myAge
adalahnumber
-
isStudent
adalahboolean
Anda tidak perlu menulis let myName: string = "Alice";
karena TypeScript cukup cerdas untuk menentukan itu!
Contoh Lebih Kompleks
TypeScript bisa menangani jenis yang lebih kompleks pula:
let myFavoriteNumbers = [1, 2, 3, 4, 5];
let myPet = { name: "Fluffy", type: "Cat", age: 3 };
Di sini, TypeScript menyimpulkan bahwa:
-
myFavoriteNumbers
adalah array dari bilangan (number[]
) -
myPet
adalah objek dengan properti tertentu (TypeScript membuat apa yang kita sebut "object literal type")
Parameter Default Fungsi
TypeScript juga bisa menginfere jenis dari parameter default dalam fungsi. Mari kita lihat contohnya:
function greet(name = "Guest") {
console.log(`Hello, ${name}!`);
}
Dalam fungsi ini, TypeScript menyimpulkan bahwa name
adalah string
karena nilai defaultnya adalah string.
Anda bisa memanggil fungsi ini dengan berbagai cara:
greet(); // Output: Hello, Guest!
greet("Alice"); // Output: Hello, Alice!
Jenis Return Fungsi
TypeScript juga cukup pintar untuk menginfere jenis return dari fungsi berdasarkan apa yang dikembalikan fungsi. Mari kita lihat beberapa contoh:
function add(a: number, b: number) {
return a + b;
}
function isEven(num: number) {
return num % 2 === 0;
}
TypeScript menyimpulkan bahwa:
-
add
mengembalikannumber
-
isEven
mengembalikanboolean
Anda tidak perlu menulis function add(a: number, b: number): number
karena TypeScript akan menentukan itu!
Jenis Terbaik Umum: Jenis Union
kadang-kadang, TypeScript perlu menginfere jenis dari beberapa ekspresi. Dalam kasus ini, ia menggunakan apa yang kita sebut "algoritma Jenis Terbaik Umum". Mari kita lihat contohnya:
let mixedArray = [1, "two", 3, "four", 5];
Di sini, TypeScript menyimpulkan bahwa mixedArray
adalah jenis (string | number)[]
. Ini berarti itu adalah array yang bisa berisi baik string maupun bilangan.
Tipe Kontekstual
Tipe kontekstual adalah saat TypeScript menggunakan konteks kode Anda untuk menginfere jenis. Ini sangat berguna untuk callback dan parameter fungsi. Mari kita lihat contohnya:
let numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(num) {
console.log(num.toFixed(2));
});
Dalam contoh ini, TypeScript mengetahui bahwa forEach
pada array bilangan akan mengirimkan bilangan ke fungsi callback. Jadi ia menyimpulkan bahwa num
adalah bilangan, sehingga Anda bisa menggunakan toFixed()
tanpa kesalahan.
Kesimpulan
Dan begitulah, teman-teman! Kita telah berpergian melalui dunia yang magis dari type inference TypeScript. Dari inisialisasi variabel sederhana hingga pengembalian fungsi kompleks dan tipe kontekstual, TypeScript selalu bekerja keras untuk memahami kode Anda dan membuat hidup Anda lebih mudah.
Ingat, type inference adalah seperti memiliki asisten cerdas yang membantu Anda menulis kode yang lebih bersih dan kurang bermasalah. Itu tidak sempurna, dan kadang-kadang Anda mungkin perlu memberikan bantuan dengan anotasi tipe eksplisit, tetapi sebagian besar waktu, ia selalu mendukung Anda!
Terus latih, terus kode, dan segera Anda akan menjadi ahli TypeScript! Semangat coding, dan may the types be ever in your favor!
Credits: Image by storyset