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 ...
si tester
Mas, ini API /profile error pas ambil address. Katanya undefined.
11.04
si paling ribet
Kamu udah cek tipe datanya?
11.05
si paling praktis
Santuy, di FE udah pake any kok. Nggak ribet, Lebih Fleksibel. ๐
11.05
si tester
Lha tapi field address nya bukan object, malah string...
11.06
si paling ribet
๐ซ Ya jelas undefined lah...
11.06
any
Jadi Pilihan?any
Bisa Jadi Petaka?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:
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
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);
}
โ ๏ธ Jangan biasakan any
jadi default. Code kamu bukan tempat pembuangan akhir error TypeScript.
Ga semua yang pake any
itu salah, tapi kalau any
muncul di setiap file...
Ya berarti ada yang salah dengan habit kamu.
any
secara sadar dan terarahunknown
+ type guard untuk validasiSituasi | Rekomendasi |
---|---|
Migrasi dari JS ke TS | Boleh pake `any`, tandai sebagai TODO |
Respons API dari pihak ketiga | Gunakan `unknown` + validator |
Logic kompleks tanpa tipe jelas | Gunakan helper types (Zod, Yup) |
โน๏ธ TypeScript powerful bukan karena strict-nya, tapi karena kasih kita kendali. Dan any
itu bukan dosa โ asal kamu
tau konsekuensinya.
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 :