Migrasi project JavaScript ke TypeScript tidak perlu sekaligus. TS dirancang untuk gradual adoption. Strateginya: mulai longgar, perketat bertahap.
Langkah 1: Setup minimal tsconfig
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"allowJs": true, // ijinkan file .js
"checkJs": false, // JANGAN cek .js dulu
"strict": false,
"noEmit": true,
"skipLibCheck": true
}
}
Langkah 2: Ganti ekstensi file secara bertahap
Rename user.js → user.ts. File lain yang masih JS tetap jalan (karena allowJs: true). Mulai dari modul paling leaf (tanpa dependency ke file lain), lalu naik ke atas.
Langkah 3: Terima any dulu, kencangkan nanti
Biarkan TS menyimpulkan any di tempat-tempat sulit. Jangan habiskan waktu di awal untuk memperbaiki setiap tipe. Tandai dengan komentar:
// TODO: type this properly after migration
function hitungSkor(input: any): any {
return input.nilai * 2;
}
Langkah 4: Aktifkan strict flag satu per satu
{
"compilerOptions": {
"noImplicitAny": true, // langkah 4a
"strictNullChecks": true, // langkah 4b
"strictFunctionTypes": true, // langkah 4c
"strict": true // langkah terakhir
}
}
Fix error yang muncul, commit, lanjut ke flag berikutnya. Strategi ini mencegah "big bang migration" yang ratusan error sekaligus.
Langkah 5: Manfaatkan JSDoc sementara
Kalau kamu belum siap rename ke .ts, TypeScript bisa memeriksa JSDoc di file .js:
/** @type {number} */
let umur = 17;
/**
* @param {string} nama
* @returns {string}
*/
function sapa(nama) { return "Halo, " + nama; }
Aktifkan checkJs: true setelah semua file penting sudah pakai JSDoc.
💡 Tips: migrasi bukan sprint. Projek besar bisa butuh mingguan/bulanan. Konsisten kecil lebih baik daripada "big rewrite" yang terhenti di tengah jalan.