Array & Tuple — TypeScript

Array — kumpulan elemen dengan tipe yang sama: let angka: number[] = [1, 2, 3]; let nama: Array = ["Budi", "Ani"]; // alternatif syntax Tuple — array dengan…

Array di TypeScript diberi type sesuai isinya: string[] artinya array yang semua isinya teks, berapa pun jumlahnya. Tuple adalah array yang jumlah isinya tetap, dan tiap posisi punya type sendiri, misalnya [string, number] untuk pasangan nama dan umur. Bayangin playlist dan baris di tabel absensi. Playlist isinya sejenis, semuanya lagu, dan bisa terus ditambah. Baris absensi selalu punya kolom yang sama dengan urutan tetap: kolom pertama nama, kolom kedua umur.

🧪 Tebakan cepat: buah bertipe string[] dan berisi 3 buah, index 0 sampai 2. Kalau kamu menulis buah[3], TypeScript menolaknya atau membiarkannya? Tebak dulu, jawabannya ada di bagian "Tuple: jumlah dan urutan tetap".

Array: daftar yang isinya sejenis

let buah: string[] = ["apel", "jeruk", "mangga"];
let nilai: number[] = [1, 2, 3];
let nama: Array<string> = ["Budi", "Ani"];

buah.push("pisang"); // boleh
buah.push(5);

Mengambil isi pertama di function

function ambilPertama(arr: string[]): string {
  return arr[0];
}

console.log(ambilPertama(["x", "y", "z"])); // x
console.log(ambilPertama(buah));            // apel

Tuple: jumlah dan urutan tetap

let profil: [string, number] = ["Budi", 17];

let namaSiswa = profil[0]; // string
let umur = profil[1];      // number
let lain = profil[2];
profil = [17, "Budi"];

Array biasa beda. buah[3] lolos, type-nya tetap string, padahal waktu jalan isinya undefined, karena array biasa gak tahu panjangnya. Itu jawaban tebakannya: cuma tuple yang tahu jumlah isinya.

readonly: boleh dibaca, gak boleh diubah

const WARNA: readonly string[] = ["merah", "biru"];

WARNA[0];                       // boleh dibaca: "merah"
WARNA.map((w) => w + "!");      // boleh, hasilnya array baru
WARNA.push("hijau");
WARNA[0] = "hitam";

const dan readonly beda: const melarang variabelnya diisi array lain, readonly melarang isi array-nya diubah.

⚠️ Jebakan yang sering ketemu

TL;DR: Array diberi type string[], number[], atau Array<string>: isinya sejenis, jumlahnya bebas, dan isi type lain ditolak (ts(2345)). Tuple [string, number] punya jumlah isi tetap dan type per posisi: index di luar panjangnya ditolak (ts(2493)), sedangkan array biasa membiarkan buah[3] lolos sebagai undefined. readonly string[] boleh dibaca dan di-map, tapi push dan mengganti isi ditolak, dan cuma dicek sebelum jalan. Isi pertama array yang dikirim ke function: return arr[0];.

Yang akan kamu pelajari