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:
{
"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".
// dengan strict: true
function sapa(nama) {} // Error: parameter 'nama' implicitly has an 'any' type
let x: string = null; // Error: null tidak assignable ke stringProject 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.
ES2022berarti output memakai fitur modern; browser/Node lama mungkin butuhES2018ke bawah. - module: sistem module output.
ESNextatauNodeNextuntuk project modern; biarkan sesuai template framework yang kamu pakai. - moduleResolution: cara compiler mencari file import.
bundleruntuk Vite/Next.js,NodeNextuntuk 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:
npx tsc --noEmit # cek tipe saja, tanpa menghasilkan file
npx tsc --showConfig # lihat konfigurasi final (termasuk extends)Catatan teknis:
skipLibCheck: truemelewatkan pengecekan tipe file.d.tslibrary 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.