TypeScript — JavaScript asosida yaratilgan, unga statik tip tizimini qo‘shadigan dasturlash tili. TypeScript kodlari yakunda JavaScript’ga aylantiriladi va brauzer yoki Node.js muhitida ishlaydi.
TypeScript katta frontend, backend va full-stack loyihalarda kodni tartibli, xavfsizroq va boshqarish oson bo‘lishi uchun ishlatiladi.
Vazifasi
TypeScript JavaScript kodida ma’lumot turlarini oldindan belgilash imkonini beradi. Bu dasturchiga xatolarni kod bajarilishidan oldin aniqlashga yordam beradi.
TypeScript quyidagi vazifalarda ishlatiladi:
- JavaScript kodiga type qo‘shish;
- katta loyihalarda kodni tartibli saqlash;
- xatolarni compile vaqtida aniqlash;
- function, object va class tuzilmasini aniq belgilash;
- frontend componentlar propslarini nazorat qilish;
- API response formatlarini ifodalash;
- backend service va DTO’lar bilan ishlash;
- IDE autocomplete imkoniyatini yaxshilash.
Masalan, function faqat son qabul qilishi kerak bo‘lsa, TypeScript bu qoidani kod darajasida belgilash imkonini beradi.
TypeScript qanday ishlaydi?
TypeScript to‘g‘ridan-to‘g‘ri brauzerda ishlamaydigan til hisoblanadi. TypeScript kodlari avval JavaScript’ga compile qilinadi.
Oddiy jarayon:
- dasturchi
.tsyoki.tsxfaylda TypeScript kod yozadi; - TypeScript compiler kodni tekshiradi;
- type xatolari bo‘lsa, ularni ko‘rsatadi;
- kod JavaScript’ga aylantiriladi;
- hosil bo‘lgan JavaScript brauzer yoki Node.js’da ishlaydi.
TypeScript JavaScript’ning ustiga qurilgan. Shu sababli oddiy JavaScript kodi ko‘pincha TypeScript ichida ham ishlaydi.
Type
Type — ma’lumotning qanday turga tegishli ekanini bildiradi. TypeScript’da variable, function argumenti, function javobi, object maydoni va boshqa qiymatlarga type berish mumkin.
Asosiy typelar:
string— matn;number— son;boolean— true yoki false;array— ro‘yxat;object— obyekt;null— bo‘sh qiymat;undefined— qiymat belgilanmagan;any— istalgan tur;unknown— noma’lum tur;void— qiymat qaytarmaydigan function;never— hech qachon qiymat qaytarmaydigan holat.
Misol:
let name: string = "Ali";
Bu yerda name faqat string qiymat qabul qilishi kerak.
Static typing
Static typing — ma’lumot turlari kod bajarilishidan oldin tekshirilishini bildiradi. TypeScript shu xususiyat orqali JavaScript’da ko‘p uchraydigan ayrim xatolarni oldindan topishga yordam beradi.
Static typing quyidagi holatlarda ishlaydi:
- noto‘g‘ri type berilganda;
- function noto‘g‘ri argument olganda;
- object ichida mavjud bo‘lmagan property chaqirilganda;
- API response noto‘g‘ri ishlatilganda;
- component propslari noto‘g‘ri uzatilganda.
Masalan, son bo‘lishi kerak bo‘lgan joyga matn berilsa, TypeScript xatolik ko‘rsatadi.
Type inference
Type inference — TypeScript qiymatga qarab type’ni o‘zi aniqlashi. Har doim ham type’ni qo‘lda yozish shart emas.
Misol:
let age = 25;
Bu holatda TypeScript age qiymatini number deb tushunadi.
Type inference quyidagi joylarda ishlaydi:
- variable qiymatlarida;
- function return qiymatlarida;
- array elementlarida;
- object maydonlarida;
- class propertylarida.
Type inference kodni qisqaroq yozishga yordam beradi.
Interface
Interface — object tuzilmasini tasvirlash uchun ishlatiladi. Interface object ichida qanday maydonlar bo‘lishi va ularning type’i qanday ekanini belgilaydi.
Misol:
interface User { id: number; name: string; email: string; }
Bu interface User objectida id, name va email maydonlari bo‘lishi kerakligini bildiradi.
Interface quyidagi joylarda ishlatiladi:
- foydalanuvchi modeli;
- API response;
- component props;
- service natijasi;
- configuration object;
- form value tuzilmasi.
Type alias
Type alias — type uchun alohida nom yaratish usuli. U oddiy type, union type, object yoki murakkab tuzilmalarni nomlashda ishlatiladi.
Misol:
type ID = number | string;
Type alias quyidagi holatlarda ishlatiladi:
- union type yaratish;
- object tuzilmasini nomlash;
- function type yozish;
- API type’larini tartibga solish;
- qayta ishlatiladigan type yaratish.
Interface va type alias o‘xshash vazifalarda ishlatilishi mumkin, lekin ayrim imkoniyatlari farq qiladi.
Union type
Union type — qiymat bir nechta type’dan biri bo‘lishi mumkinligini bildiradi.
Misol:
let id: number | string;
Bu yerda id son ham, matn ham bo‘lishi mumkin.
Union type quyidagi holatlarda ishlatiladi:
- ID son yoki string bo‘lganda;
- status qiymatlari cheklanganda;
- API’dan turli javoblar kelganda;
- form qiymatlari har xil bo‘lganda;
- optional holatlar bilan ishlaganda.
Masalan:
type Status = "active" | "inactive" | "blocked";
Bu type faqat uchta qiymatdan birini qabul qiladi.
Array
TypeScript’da array elementlarining type’ini belgilash mumkin.
Misol:
let numbers: number[] = [1, 2, 3];
Yoki:
let names: Array<string> = ["Ali", "Vali"];
Array type quyidagi joylarda ishlatiladi:
- foydalanuvchilar ro‘yxati;
- mahsulotlar ro‘yxati;
- IDlar massivi;
- taglar;
- API’dan kelgan ro‘yxat;
- selected itemlar.
Array ichida noto‘g‘ri type’dagi qiymat bo‘lsa, TypeScript xatolik ko‘rsatadi.
Object
TypeScript’da object ichidagi maydonlar va ularning type’lari aniq belgilanadi.
Misol:
let user: { id: number; name: string } = { id: 1, name: "Ali" };
Object type quyidagi ma’lumotlarni ifodalashda ishlatiladi:
- foydalanuvchi profili;
- mahsulot;
- maqola;
- buyurtma;
- sozlamalar;
- forma qiymatlari;
- API javobi.
Katta object tuzilmalari uchun odatda interface yoki type alias ishlatiladi.
Function type
TypeScript’da function argumentlari va qaytaradigan qiymatiga type berish mumkin.
Misol:
function add(a: number, b: number): number { return a + b; }
Bu function faqat number argument qabul qiladi va number qaytaradi.
Function type quyidagi holatlarda muhim:
- hisob-kitob functionlari;
- API service functionlari;
- event handlerlar;
- callback functionlar;
- validation functionlari;
- utility functionlar.
Function return type noto‘g‘ri bo‘lsa, TypeScript xatolik beradi.
Optional property
Optional property — object ichidagi maydon bo‘lishi ham, bo‘lmasligi ham mumkinligini bildiradi. TypeScript’da optional property ? belgisi bilan yoziladi.
Misol:
interface User { id: number; phone?: string; }
Bu yerda phone majburiy emas.
Optional property quyidagi holatlarda ishlatiladi:
- ixtiyoriy profil ma’lumotlari;
- to‘ldirilmagan forma maydonlari;
- API’da har doim kelmaydigan fieldlar;
- sozlamalarda majburiy bo‘lmagan qiymatlar;
- partial update ma’lumotlari.
Generic
Generic — type’ni qayta ishlatiladigan va moslashuvchan qilish mexanizmi. Generic yordamida function, class yoki interface turli type bilan ishlay oladi.
Misol:
function identity<T>(value: T): T { return value; }
Bu function qanday type qabul qilsa, shunday type qaytaradi.
Generic quyidagi joylarda ishlatiladi:
- API response type’lari;
- reusable functionlar;
- componentlar;
- collectionlar;
- service qatlamlari;
- utility type’lar.
Generic TypeScript’da katta va moslashuvchan kod bazalarida ko‘p uchraydi.
Enum
Enum — oldindan belgilangan qiymatlar to‘plamini ifodalash uchun ishlatiladi.
Misol:
enum Role { Admin, User, Guest }
Enum quyidagi holatlarda ishlatilishi mumkin:
- foydalanuvchi roli;
- buyurtma statusi;
- to‘lov holati;
- xabar turi;
- permission darajalari.
TypeScript’da enum o‘rniga union string type ham ko‘p ishlatiladi.
Any
Any — istalgan type’ni qabul qiladigan maxsus type. any ishlatilganda TypeScript type tekshiruvini deyarli chetlab o‘tadi.
Misol:
let data: any = "hello";
Keyin bu qiymatga son, object yoki boshqa qiymat berilishi mumkin.
any quyidagi holatlarda uchrashi mumkin:
- eski JavaScript kodini TypeScript’ga o‘tkazishda;
- type’i noma’lum tashqi kutubxona bilan ishlaganda;
- vaqtinchalik test kodlarda;
- murakkab ma’lumotni hali aniq belgilamagan holatda.
any TypeScript’ning type xavfsizligini kamaytiradi.
Unknown
Unknown — type’i noma’lum qiymatni ifodalash uchun ishlatiladi. unknown ham istalgan qiymatni qabul qiladi, lekin uni ishlatishdan oldin type tekshirish kerak bo‘ladi.
Misol:
let value: unknown = "text";
unknown quyidagi holatlarda ishlatiladi:
- tashqi API javobi;
- foydalanuvchi kiritgan noma’lum qiymat;
- error object;
- dynamic ma’lumotlar;
- xavfsizroq any o‘rnida.
unknown type xavfsizligini saqlagan holda noma’lum qiymatlar bilan ishlash imkonini beradi.
TypeScript va JavaScript farqi
TypeScript va JavaScript o‘rtasidagi asosiy farq type tizimidadir.
Farqlar:
- JavaScript runtime’da type bilan ishlaydi;
- TypeScript compile vaqtida type tekshiradi;
- JavaScript brauzerda bevosita ishlaydi;
- TypeScript JavaScript’ga aylantiriladi;
- TypeScript interface, type, enum, generic kabi imkoniyatlarga ega;
- JavaScript sintaksisi soddaroq va bevosita bajariladi.
TypeScript JavaScript o‘rnini to‘liq bosadigan alohida platforma emas, balki JavaScript ustiga qo‘shimcha imkoniyatlar beradigan til hisoblanadi.
TSX
TSX — TypeScript va JSX birga ishlatiladigan fayl formati. U asosan React loyihalarida component yozish uchun ishlatiladi.
TSX fayllarda quyidagilar bo‘ladi:
- React componentlar;
- TypeScript type’lar;
- props interface;
- JSX markup;
- event handlerlar;
- state type’lari.
Masalan, React component propslariga TypeScript interface orqali aniq type berish mumkin.
TypeScript config
TypeScript loyihalarda tsconfig.json fayli orqali sozlanadi. Bu fayl compiler qanday ishlashini belgilaydi.
tsconfig.json ichida quyidagi sozlamalar bo‘lishi mumkin:
- target JavaScript versiyasi;
- module turi;
- strict mode;
- source map;
- path alias;
- JSX sozlamasi;
- include va exclude fayllar;
- output papka;
- type checking qoidalari.
TypeScript compiler shu fayl asosida kodni tekshiradi va compile qiladi.
Strict mode
Strict mode — TypeScript’da type tekshiruvni kuchaytiradigan sozlamalar to‘plami. U ko‘proq xatolarni oldindan aniqlashga yordam beradi.
Strict mode quyidagi tekshiruvlarni kuchaytiradi:
- null va undefined bilan ishlash;
- function argumentlari;
- implicit any;
- object propertylari;
- class maydonlari;
- type mosligi.
Strict mode katta loyihalarda kod sifatini oshirish uchun ishlatiladi.
Frontenddagi o‘rni
TypeScript zamonaviy frontend loyihalarda keng ishlatiladi. React, Vue, Angular, Next.js va Nuxt loyihalarida TypeScript componentlar, props, state va API response’larni aniq type bilan boshqarishga yordam beradi.
Frontend’da TypeScript quyidagi joylarda ishlatiladi:
- component props;
- state type;
- API response;
- form value;
- route parametrlari;
- event handlerlar;
- store type’lari;
- utility functionlar;
- configuration objectlar.
Masalan, mahsulot kartasi componenti qanday props olishini TypeScript orqali aniq belgilash mumkin.
Backenddagi o‘rni
TypeScript Node.js backend loyihalarida ham ishlatiladi. Ayniqsa NestJS, Express.js, Fastify va Prisma bilan birga keng qo‘llanadi.
Backend’da TypeScript quyidagi joylarda ishlatiladi:
- DTO;
- service classlar;
- controller;
- middleware;
- database model;
- API response type;
- validation schema;
- config type;
- authentication payload;
- error handling.
TypeScript backend kodida request, response, database va service qatlamlari orasidagi type mosligini boshqarishga yordam beradi.
Dasturlashdagi o‘rni
TypeScript JavaScript ekotizimidagi katta loyihalar uchun muhim texnologiyalardan biridir. U frontend, backend, desktop, mobile va full-stack loyihalarda ishlatilishi mumkin.
TypeScript ko‘p uchraydigan joylar:
- React loyihalari;
- Vue loyihalari;
- Angular loyihalari;
- Next.js;
- Nuxt;
- Node.js backend;
- NestJS;
- Prisma;
- Electron;
- monorepo loyihalar;
- design system;
- SDK va kutubxonalar.
TypeScript JavaScript imkoniyatlarini saqlagan holda kodga aniq type tizimini qo‘shadi.
Bog‘liq tushunchalar
JavaScript, Frontend, Backend, React, Vue, Node.js, API, JSON, Interface, Type, Function, Compiler