Lewati ke konten

Tipe Data: any

Setelah membaca halaman ini, kamu akan mampu:

  • Menjelaskan arti tipe any
  • Memahami risiko penggunaan any
  • Mengenali situasi terbatas saat any mungkin digunakan
  • Memilih tipe yang lebih aman jika tersedia

Salah satu kekuatan TypeScript adalah kemampuannya mengecek tipe data. Tetapi ada satu tipe yang bisa “mematikan” pemeriksaan itu: any.

any berarti: “nilai ini boleh berupa apa saja, dan TypeScript jangan bertanya terlalu banyak.” Kedengarannya nyaman, tetapi kebebasan ini bisa membuat bug tersembunyi.


Variabel bertipe any dapat menyimpan nilai apa pun dan dapat berubah ke tipe apa pun tanpa error:

📄 TypeScript
let data: any = "Putra"
data = 17
data = true
data = null

TypeScript tidak akan protes. Ia berhenti melindungi variabel tersebut.


Tipe yang jelas seperti string atau number adalah kotak dengan label:

┌───────────────┐
│ HANYA ANGKA │ → number
└───────────────┘

any seperti tas tanpa label. Kamu bisa memasukkan buku, makanan, sepatu, cairan, bahkan barang yang tidak seharusnya dicampur.

┌───────────────┐
│ ISI APA SAJA│ → any
└───────────────┘

Tas itu memang fleksibel, tetapi saat mencari barang atau menemukan barang rusak, kamu akan kesulitan. Begitu juga program dengan terlalu banyak any.


Buat file src/bab1/any.ts:

📄 TypeScript
let dataBebas: any = "Putra"
console.log("Awal:", dataBebas, "| tipe:", typeof dataBebas)
dataBebas = 17
console.log("Berubah:", dataBebas, "| tipe:", typeof dataBebas)
dataBebas = true
console.log("Berubah lagi:", dataBebas, "| tipe:", typeof dataBebas)
dataBebas = ["RPL", "DKV", "TKJ"]
console.log("Berubah lagi:", dataBebas, "| tipe:", typeof dataBebas)
// TypeScript membiarkan operasi berisiko ini:
let nama: any = "Putra"
console.log(nama.toUpperCase())
nama = 17
// console.log(nama.toUpperCase())
// Jika baris ini dibuka, program error saat dijalankan.

Jalankan:

tsx src/bab1/any.ts

📄 TypeScript
let dataBebas: any = "Putra"
  • : any berarti TypeScript menerima nilai tipe apa pun
  • Nilai awalnya string, tetapi variabel ini tidak akan terkunci menjadi string
📄 TypeScript
dataBebas = 17

Baris ini aman menurut TypeScript, meski tipe berubah dari string menjadi number.

📄 TypeScript
let nama: any = "Putra"
console.log(nama.toUpperCase())

.toUpperCase() cocok untuk string. Karena nama bertipe any, TypeScript tidak bisa memastikan bahwa nilai ini memang string.


Bandingkan dua kode berikut:

📄 TypeScript
let namaAman: string = "Putra"
// namaAman = 17
// Error langsung terlihat di VS Code
📄 TypeScript
let namaTidakAman: any = "Putra"
namaTidakAman = 17
console.log(namaTidakAman.toUpperCase())
// Error baru muncul ketika program dijalankan

Dengan any, TypeScript tidak dapat mencegah kesalahan di contoh kedua. Jadi manfaat utama TypeScript hilang.


Sebisa mungkin, jangan gunakan any. Namun ada beberapa keadaan sementara:

  1. Data dari library lama belum memiliki tipe yang jelas
  2. Kamu sedang memindahkan project JavaScript besar ke TypeScript sedikit demi sedikit
  3. Kamu benar-benar belum tahu bentuk data, dan perlu membuat perbaikan sementara

Setelah bentuk data sudah jelas, ganti any dengan tipe yang tepat atau unknown.


❌ Memakai any untuk menghindari error tipe

Section titled “❌ Memakai any untuk menghindari error tipe”
📄 TypeScript
let nilai: any = 90
nilai = "sembilan puluh"

Kode ini mungkin berjalan, tetapi data nilai menjadi tidak konsisten.

Perbaikan: pilih tipe yang benar:

📄 TypeScript
let nilai: number = 90

any hanya membuat TypeScript diam. Ia tidak membuat program bebas bug.



Buat file src/bab1/latihan-any.ts:

  1. Buat variabel dataPercobaan bertipe any dengan nilai namamu
  2. Ubah menjadi umurmu
  3. Ubah menjadi status boolean
  4. Tampilkan nilai dan typeof setiap kali berubah
  5. Tambahkan komentar: mengapa tipe ini berisiko jika dipakai untuk data nilai siswa?

  • any menerima nilai tipe apa pun
  • TypeScript tidak melakukan pemeriksaan tipe pada any
  • any bisa menyembunyikan bug sampai program dijalankan
  • Gunakan tipe spesifik saat memungkinkan
  • Jika data belum diketahui, unknown biasanya lebih aman daripada any