Any Any di Typescript: Males kok bilangnya biar Fleksibel

2025-06-01

pro-kontra-developer

๐Ÿ“ข DISCLAIMER

Ga dosa kok pake any. Seringkali kita butuh si any. Tapi klo udah kebanyakan pake any-any, coba deh introspeksi, kali aja kamu udh mulai pny habit males ...

๐Ÿ’ฌ Squad Chat Group

T

si tester

Mas, ini API /profile error pas ambil address. Katanya undefined.

11.04

R

si paling ribet

Kamu udah cek tipe datanya?

11.05

P

si paling praktis

Santuy, di FE udah pake any kok. Nggak ribet, Lebih Fleksibel. ๐Ÿ˜Ž

11.05

T

si tester

Lha tapi field address nya bukan object, malah string...

11.06

R

si paling ribet

๐Ÿซ  Ya jelas undefined lah...

11.06

๐ŸŸข Tim Pro: Kenapa any Jadi Pilihan?

  • Cepat dan fleksibel, cocok buat prototyping atau migrasi legacy JS
  • Menghindari tipe error yang muncul terus waktu ngerjain module baru
  • Bisa fokus dulu ke logic daripada keburu pusing mikirin struktur data
  • Enabler buat integrasi dynamic data (API 3rd party, dsb)

๐Ÿ”ด Tim Kontra: Kenapa any Bisa Jadi Petaka?

  • Menghilangkan seluruh fitur type-checking dari TypeScript
  • Error bisa bocor ke production karena nggak ketangkep waktu compile
  • Merusak IDE experience: autocomplete, refactor, rename? Bye...
  • Jadi candu: sekali any, susah tobat

๐Ÿงช Analisa & Sudut Pandang Secure Coding

Kelemahan utama any itu bukan dari syntax-nya, tapi dari rasa malas mikirin data structure.

Kalau semua variable bisa jadi any, maka semua validasi dan constraint dipindahkan ke runtime.

Itu artinya:

  • Lebih rawan bug silent (karena field gak kecek)
  • Lebih susah audit (gak tau data shape-nya gimana)
  • Lebih rentan injection (kalau gak ada filter ketat di awal)

โŒ Bad Practices

โŒ NGERI INI MAH!!!

Hindari declare tipe data any secara massal, terutama buat response API. Ini kaya bilang: "Saya terima apapun yang dikirim, asal jangan error waktu compile."

Ts

// โŒ Salah satu bentuk kemalasan akut
const user: any = fetchUser();
console.log(user.address.city.toUpperCase()); // โ›” runtime error: city is undefined

๐Ÿ›ก๏ธ Secure Best Practices

โœ… Mantap!

Gunakan any hanya jika benar-benar terpaksa, dan kasih TODO comment atau lint rule supaya bisa segera di-refactor.

Contoh yang lebih aman:

Ts

// โœ… Awali dengan unknown lalu validasi bentuk datanya
const response: unknown = await fetchUser();

if (isValidUser(response)) {
  const user = response as User;
  console.log(user.address.city);
}

function isValidUser(data: any): data is User {
  return typeof data === 'object' && data !== null && 'address' in data;
}

Atau gunakan helper types seperti Zod:

Ts

import { z } from 'zod';

const UserSchema = z.object({
  address: z.object({
    city: z.string()
  })
});

const data = await fetchUser();
const parsed = UserSchema.safeParse(data);

if (parsed.success) {
  console.log(parsed.data.address.city);
} else {
  console.error("Validation failed", parsed.error);
}
โš ๏ธ Waspada, Lur!

โš ๏ธ Jangan biasakan any jadi default. Code kamu bukan tempat pembuangan akhir error TypeScript.

โœ… Takeaway Developer

Ga semua yang pake any itu salah, tapi kalau any muncul di setiap file... Ya berarti ada yang salah dengan habit kamu.

  • Gunakan any secara sadar dan terarah
  • Tandai dengan TODO supaya bisa diganti nanti
  • Prefer unknown + type guard untuk validasi
  • Refactor kalau udah paham struktur data-nya
Ilustrasi Developer Galau: Any di Typescript
SituasiRekomendasi
Migrasi dari JS ke TSBoleh pake `any`, tandai sebagai TODO
Respons API dari pihak ketigaGunakan `unknown` + validator
Logic kompleks tanpa tipe jelasGunakan helper types (Zod, Yup)
โ„น๏ธ Info Gaes!

โ„น๏ธ TypeScript powerful bukan karena strict-nya, tapi karena kasih kita kendali. Dan any itu bukan dosa โ€” asal kamu tau konsekuensinya.

๐Ÿค” Diskusi & Sharing Pengalaman

Lo tim strict atau any? Pernah ga, error karena any malah sembunyi dan baru muncul pas di production?

Yuk share cerita lo. Kita bukan mau judging โ€” kita cuma pengen bareng-bareng jadi developer yang lebih sadar. ๐Ÿ’ฌ

Konten Terkait :

Save() di ORM: Praktis, Tapi Kadang Bikin Data Korban