tsconfigkonfigurasistrictMenengah4 mnt baca

Memahami tsconfig.json

Opsi compiler yang penting: strict, target, module, include, dan cara membacanya.

File Kendali Compiler

tsconfig.json mengatur bagaimana tsc membaca dan mengkompilasi project. Contoh minimal yang sehat:

json
{
  "compilerOptions": {
    "target": "ES2022",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "strict": true,
    "outDir": "dist",
    "rootDir": "src",
    "skipLibCheck": true
  },
  "include": ["src"],
  "exclude": ["node_modules", "dist"]
}

strict: Opsi Paling Penting

"strict": true mengaktifkan seluruh keluarga pengecekan ketat: strictNullChecks, noImplicitAny, dan lainnya. Ini satu baris yang membedakan "TypeScript beneran" dari "JavaScript dengan sedikit anotasi".

typescript
// dengan strict: true
function sapa(nama) {} // Error: parameter 'nama' implicitly has an 'any' type
let x: string = null;  // Error: null tidak assignable ke string

Project baru dari Vite, Next.js, atau NestJS sudah strict by default. Jangan pernah mematikannya untuk menghindari error; perbaiki kodenya.

target dan module

  • target: versi JavaScript hasil kompilasi. ES2022 berarti output memakai fitur modern; browser/Node lama mungkin butuh ES2018 ke bawah.
  • module: sistem module output. ESNext atau NodeNext untuk project modern; biarkan sesuai template framework yang kamu pakai.
  • moduleResolution: cara compiler mencari file import. bundler untuk Vite/Next.js, NodeNext untuk Node murni.

include, exclude, dan File Referensi

include: ["src"] berarti hanya file di src yang dikompilasi. exclude mengabaikan node_modules dan output. Kalau error muncul dari file yang tidak kamu tulis (misal file test), cek dulu include/exclude sebelum panik.

Perintah berguna:

bash
npx tsc --noEmit      # cek tipe saja, tanpa menghasilkan file
npx tsc --showConfig  # lihat konfigurasi final (termasuk extends)

Catatan teknis: skipLibCheck: true melewatkan pengecekan tipe file .d.ts library pihak ketiga. Ini mempercepat kompilasi dan menghindari error dari tipe library yang tidak rapi. Aman untuk hampir semua project, karena bug di library bukan tanggung jawabmu untuk diperbaiki via compiler.