Dulu saya menunda TypeScript karena merasa "nanti dulu, project-nya kecil". Ternyata makin lama makin mahal untuk mulai. Kalau kamu masih di fase yang sama, ini jalur yang saya rekomendasikan.
Mulai dari Mode Longgar
Jangan langsung strict: true. Nyalakan TypeScript dengan pengaturan lunak dulu:
{
"compilerOptions": {
"strict": false,
"noImplicitAny": true,
"allowJs": true
}
}
File .js lama tetap jalan, sementara file baru mulai ditulis sebagai .ts.
Tiping yang Praktis Dulu
Prioritaskan bagian yang paling sering jadi sumber bug:
- Respons API β definisikan interface bentuk data
- Parameter fungsi β tipe input/output
- Event handler β biarkan inferensi Vue/React bekerja
interface ArticleComment {
id: string
name: string
message: string
at: string
}
function renderComment(c: ArticleComment) {
// sekarang editor tahu c.message itu string
}
Type bukan formalitas β type adalah dokumentasi yang tidak bisa bohong.
any Itu Utang, Bukan Solusi
Sadar bahwa kadang any menggoda. Trik saya: pakai unknown lalu sempitkan.
function parse(input: unknown): ArticleComment {
const o = input as Record<string, unknown>
return {
id: String(o.id),
name: String(o.name ?? 'Anonim'),
message: String(o.message),
at: new Date(String(o.at)).toISOString()
}
}
Lebih panjang sedikit, tapi runtime-nya aman.
Yang Saya Rasakan Setelah Setahun
Refactor jadi tidak menakutkan. Ganti nama field? Compiler yang bilang bagian mana yang rusak. Bug kelas undefined is not a function praktis hilang.
Pelan-pelan saja. Konsisten lebih penting daripada cepat.