tsconfig.json asoslari — strict va muhim sozlamalar
tsc --init bilan yaratilgan tsconfig.json da yuzlab sozlama bor — aksariyati izohlab o'chirilgan. Hammasi bir vaqtda kerak emas. Lekin bir nechtasini tushunmasdan TypeScript ni to'g'ri ishlatib bo'lmaydi.
tsconfig.json tuzilmasi
{
"compilerOptions": {
// sozlamalar
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}
compilerOptions — kompilyator qanday ishlashini belgilaydi.
include — qaysi fayllar kompilyatsiya qilinadi.
exclude — qaysi papkalar o'tkazib yuboriladi.
Eng muhim sozlama — strict
{
"compilerOptions": {
"strict": true
}
}
strict: true — TypeScript ning to'liq kuchini yoqadi. Bu bitta sozlama bir nechta tekshiruvni birga yoqadi:
strictNullChecks — null va undefined bilan ishlashni tekshiradi. Bu eng muhimi.
// strict: false (sozlanmagan)
let ism: string = null; // ← ruxsat beriladi, lekin xavfli
// strict: true
let ism: string = null;
// ❌ Type 'null' is not assignable to type 'string'
noImplicitAny — tur aniqlanmagan joyda any chiqarishni taqiqlaydi.
// strict: false
function salomlash(ism) { // ← ism = any, TypeScript jim turadi
return ism.toUpperCase();
}
// strict: true
function salomlash(ism) {
// ❌ Parameter 'ism' implicitly has an 'any' type
Hayotiy o'xshatma
Yangi xodim keldi. Strict rejim — "hamma qoidaga rioya qil". Non-strict — "xohlaganingni qil". Qoidalar ko'proq bog'laydi, lekin xatolar kamayadi. strict: true — qoidalarni maksimal qilish.
target — qaysi JavaScript versiyasiga o'girish
{
"compilerOptions": {
"target": "ES2020"
}
}
TypeScript ni qaysi JavaScript versiyasiga aylantirishini belgilaydi. Qiymatlar: ES5, ES6/ES2015, ES2020, ES2022, ESNext.
// TypeScript da
const sonlar = [1, 2, 3];
const [birinchi, ...qolganlar] = sonlar;
// target: "ES5" ga o'girilganda:
var sonlar = [1, 2, 3];
var birinchi = sonlar[0], qolganlar = sonlar.slice(1);
// target: "ES2020" ga o'girilganda:
const sonlar = [1, 2, 3];
const [birinchi, ...qolganlar] = sonlar; // o'zgarmaydi
Eski brauzerlarni qo'llab-quvvatlash kerak bo'lsa — ES5. Zamonaviy muhit uchun — ES2020 yoki ESNext.
outDir — JavaScript fayllar qayerga yozilsin
{
"compilerOptions": {
"outDir": "./dist"
}
}
Belgilanmasa — .ts fayl yonida .js yaratiladi. Bu aralashib ketadi. outDir: "./dist" bilan — barcha .js fayllar dist/ papkasiga yig'iladi.
Sozlanmagan: outDir: "./dist" bilan:
src/
index.ts src/
index.js ← index.ts
utils.ts dist/
utils.js ← index.js
utils.js
rootDir — TypeScript fayllar qayerda
{
"compilerOptions": {
"rootDir": "./src",
"outDir": "./dist"
}
}
rootDir — TypeScript fayllarning bosh papkasi. outDir bilan birga ishlatilganda papka tuzilmasi saqlanadi:
src/utils/string.ts → dist/utils/string.js
src/index.ts → dist/index.js
module — modul tizimi
{
"compilerOptions": {
"module": "CommonJS" // Node.js uchun
// yoki
"module": "ESNext" // brauzer / Vite / modern Node.js uchun
}
}
Node.js loyihalari uchun — "CommonJS". Vite yoki zamonaviy frontend uchun — "ESNext".
Minimal ishlaydigan tsconfig.json
Yangi loyiha uchun yaxshi boshlanish nuqtasi:
{
"compilerOptions": {
"target": "ES2020",
"module": "CommonJS",
"rootDir": "./src",
"outDir": "./dist",
"strict": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}
esModuleInterop: true — import express from "express" ko'rinishida CommonJS modullarni import qilish uchun. Yo'q bo'lsa — import * as express from "express" deyish kerak bo'ladi.
forceConsistentCasingInFileNames: true — Windows va Linux da fayl nomlari katta-kichik harf farqini bir xil saqlash.
Tez-tez uchraydigan xatolar
strict: false bilan boshlash:
Ko'pchilik "keyin qo'shaman" deydi — lekin qo'shilganda yuzlab xato chiqadi. Boshidanoq strict: true bilan boshlash to'g'riroq.
outDir belgilamaslik:
src/
index.ts
index.js ← tsc yaratdi, aralashib ketdi
Har doim outDir: "./dist" qo'shing.
include yo'q — barcha fayllar kompilyatsiya qilinadi:
node_modules ichidagi fayllar ham tekshirilishi mumkin. include: ["src/**/*"] bilan faqat kerakli papkani belgilang.
Xulosa
tsconfig.json — TypeScript kompilyatorining sozlama fayli. Eng muhim sozlamalar:
strict: true— to'liq tekshiruv, har doim yoqingtarget— qaysi JavaScript versiyasiga o'girishoutDir— kompilyatsiya natijalari qayerga ketsinrootDir— TypeScript fayllar qayerdamodule— Node.js uchunCommonJS, brauzer uchunESNext
Keyingi dars
5-dars: string, number, boolean — asosiy turlar