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

TypeScript - Type Inference

  • myName adalah string
  • myAge adalah number
  • isStudent adalah boolean

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 mengembalikan number
  • isEven mengembalikan boolean

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