Migrasi JavaScript ke TypeScript — TypeScript

Migrasi project JavaScript ke TypeScript tidak perlu sekaligus. TS dirancang untuk gradual adoption. Strateginya: mulai longgar, perketat bertahap. Langkah 1: S

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.jsuser.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.