Blog/typescript/JavaScript-dən TypeScript-ə Keçid: Addım-Addım Praktiki Plan
typescript

JavaScript-dən TypeScript-ə Keçid: Addım-Addım Praktiki Plan

B
Baku Stack AI
·28 mart 2026·4 dəq oxuma·20 baxış
typescript.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ MIGRATION ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ .js →→→ .ts ▓
▓ ▓
▓ ● allowJs: true ✓ ▓
▓ ● strict: false ░ ▓
▓ ● noAny: true ✓ ▓
▓ ● nullCheck: true ✓ ▓
▓ ● strict: true ✓ ▓
▓ ▓
▓ Progress: ▓
▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░ 87% ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Layihəni sıfırdan yazmadan JS-dən TS-ə necə keçmək olar? Real kod nümunələri, konkret addımlar və Bakı developer bazarında TypeScript biliyinin nə qədər fərq yaratdığını göstərən praktiki bələdçi.

JavaScript-dən TypeScript-ə Keçid: Addım-Addım Praktiki Plan

Salam, developer dostum. Əgər bu məqaləni oxuyursansa, çox güman ki, artıq JavaScript-lə bir müddət işləmisən və TypeScript-ə keçməyin vaxtının gəldiyini hiss edirsən. Bəlkə LinkedIn-də gördüyün vakansiyalarda "TypeScript required" yazısı artıq gözünə dəyir. Bəlkə də komandadakı senior developer "bu layihəni TS-ə migrate edəcəyik" dedi və sən bir az gərginləşdin. Hər iki halda — düzgün yerdəsən.

Bu məqalədə sənə mövcud JavaScript layihəni sıfırdan yazmadan, addım-addım TypeScript-ə necə keçirə biləcəyini göstərəcəyəm.

Niyə TypeScript? Rəqəmlər danışsın

Stack Overflow-un 2025 Developer Survey-inə görə, TypeScript artıq dünyanın ən çox sevilən dilləri sırasında 3-cü yerdədir. GitHub-un Octoverse hesabatında isə TypeScript istifadəsi son 3 ildə 37% artıb.

Bakı bazarına baxsaq, mənzərə daha da maraqlıdır:

  • JavaScript developer üçün orta maaş: 1200-2000 AZN (junior-mid)
  • TypeScript + React/Node bilən developer: 2500-4500 AZN (mid-senior)
  • Kapital Bank, ABB, Pasha Holding, SOCAR-ın texnoloji şirkətləri kimi böyük oyunçular artıq yeni layihələrdə TypeScript tələb edir
  • Freelance bazarda TypeScript bilən Azərbaycanlı developer Upwork-də saatına $25-50 qazana bilir, JS-only ilə bu rəqəm $10-25 civarındadır

Yəni TypeScript öyrənmək sadəcə texniki inkişaf deyil — bu, birbaşa cibinə təsir edən investisiyadır.

Addım 1: TypeScript-i Mövcud Layihəyə Əlavə Et

Ən böyük səhv: "Gəl layihəni sıfırdan TS-də yazım." Yox. Mövcud JS layihəni tədricən migrate et.

bash
# Layihə qovluğunda terminala yaz: npm install --save-dev typescript @types/node npx tsc --init

Bu sənə tsconfig.json faylı yaradacaq. İlk konfiqurasiyanı belə et:

json
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "allowJs": true, "checkJs": false, "outDir": "./dist", "rootDir": "./src", "strict": false, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true }, "include": ["src/**/*"] }

Diqqət et: allowJs: truestrict: false. Bu, JS fayllarının TS ilə yanaşı yaşamasına icazə verir. Sərt rejimi sonra yavaş-yavaş açacağıq.

Addım 2: İlk Faylını .ts-ə Çevir

Ən sadə utility faylını seç. Məsələn, helpers.js faylın var:

javascript
// helpers.js (köhnə) function formatPrice(price, currency) { return `${price.toFixed(2)} ${currency}`; } function calculateDiscount(price, percent) { return price - (price * percent) / 100; } module.exports = { formatPrice, calculateDiscount };

Adını helpers.ts et və tip əlavə et:

typescript
// helpers.ts (yeni) interface PriceResult { original: number; discounted: number; formatted: string; } function formatPrice(price: number, currency: string = "AZN"): string { return `${price.toFixed(2)} ${currency}`; } function calculateDiscount(price: number, percent: number): PriceResult { const discounted = price - (price * percent) / 100; return { original: price, discounted, formatted: formatPrice(discounted), }; } export { formatPrice, calculateDiscount };

Gördün? Heç bir "sehrli" şey yoxdur. Sadəcə parametrlərin yanına tip yazdıq və return dəyəri üçün interface yaratdıq. İndi calculateDiscount("on", "beş") yazsaq — TypeScript compile vaxtı bizi xəbərdar edəcək, runtime-da deyil.

Addım 3: Strict Rejimi Tədricən Aç

Bu, ən vacib addımdır. Birdən strict: true etsən, yüzlərlə xəta görəcəksən və motivasiyanı itirəcəksən. Bunun əvəzinə tədricən aç:

json
{ "compilerOptions": { "noImplicitAny": true, "strictNullChecks": false, "strictFunctionTypes": false } }

Həftə 1-2: noImplicitAny: true — hər yerə any yazmağın qarşısını alır. Həftə 3-4: strictNullChecks: truenullundefined xətalarını tutur. Həftə 5+: strict: true — tam sərt rejim.

Bu yanaşma ilə hər həftə 5-10 faylı migrate edəcəksən. 20-30 fayllıq bir layihə 1-2 ayda tamamilə TypeScript-ə keçmiş olacaq.

Addım 4: Third-Party Library Tipləri

Əksər populyar kitabxanaların tipləri hazırdır:

bash
npm install --save-dev @types/express @types/lodash @types/react

Əgər kitabxananın tipi yoxdursa, declarations.d.ts faylı yarat:

typescript
// declarations.d.ts declare module "az-phone-validator" { export function validate(phone: string): boolean; }

Addım 5: CI/CD Pipeline-a TypeScript Check Əlavə Et

package.json-a bu skriptləri əlavə et:

json
{ "scripts": { "type-check": "tsc --noEmit", "build": "tsc", "dev": "ts-node src/index.ts" } }

GitHub Actions və ya GitLab CI ilə hər PR-da npm run type-check işlət. Bu, komandanı nizam-intizama sövq edəcək.

Tez-tez Edilən Səhvlər

  • Hər yerə any yazmaq — bunu etsən, TypeScript-in mənası qalmır. any istifadəsini unknown ilə əvəzlə.
  • Birdən strict mode açmaq — tədricən keç, yuxarıda yazdığım kimi.
  • Interface əvəzinə Type hər yerdə istifadə etmək — obyektlər üçün interface, union/intersection üçün type istifadə et.
  • @ts-ignore ilə xətaları gizlətmək — bu texniki borca çevrilir, hər @ts-ignore üçün TODO yarat.

Real Keçid Planı: 6 Həftəlik Cədvəl

HəftəHədəfFayl sayı
1TypeScript quraşdır, tsconfig yarat, 1 utility faylı migrate et1-3
2Bütün utility/helper faylları migrate et5-10
3API layer / service faylları migrate et, noImplicitAny5-10
4Component / route faylları migrate et, strictNullChecks10-15
5Test fayllarını migrate et, strict: true5-10
6allowJs: false et, son review, CI/CD-yə type-check əlavə et-

Son Söz

TypeScript öyrənmək çətin deyil — onu düzgün tətbiq etmək bacarıq tələb edir. Sən artıq JavaScript bilirsən, yəni yolun 70%-ni keçmisən. Qalan 30% — tipdüşünmə tərzini mənimsəməkdir.

Bakının texnoloji ekosistemi sürətlə böyüyür. ABB Tech, Kapital Bank Digital, Pasha Holding IT, onlarla startup — hamısı TypeScript bilən developer axtarır. Bu keçid sənin üçün sadəcə texniki upgrade deyil, karyera atılımıdır.

Layihəni aç, npm install typescript yaz və ilk faylını .ts-ə çevir. Geri dönüş olmayacaq — amma bunun yaxşı mənada olduğuna söz verirəm.


Sualın var? Kommentdə yaz, hər birinə cavab verəcəyəm. Əgər öz keçid təcrübəni bölüşmək istəyirsənsə — baku-stack tag-i ilə paylaş!

Oxşar məqalələr

typescript.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ TYPESCRIPT ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ z.string() ✓ safe ▓
▓ z.number() ✓ safe ▓
▓ z.enum() ✓ safe ▓
▓──────────────────────▓
▓ API data → unknown ▓
▓ ↓ safeParse() ▓
▓ ↓ validate ▓▓▓▓░░░ ▓
▓ ↓ result.success ▓
▓ ✓ typed & safe! ▓
▓ ● runtime: 100% ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Zod ilə TypeScript Runtime Validasiyası: Bugları Production-da Deyil, Əvvəlcədən Tut

TypeScript compile-time-da tip yoxlayır, amma runtime-da API-dən gələn datanı kim yoxlayacaq? Zod ilə validasiyanı necə həll edəcəyini real nümunələrlə göstərirəm.

typescript.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ TYPESCRIPT ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ supabase gen types ▓
▓ ▓▓▓▓▓▓▓▓▓▓▓▓░░░ 80% ▓
▓ ▓
▓ → Database → Types ▓
▓ → Types → Client ▓
▓ → Client → IDE ✓ ▓
▓ ▓
▓ ● Row ● Insert ▓
▓ ● Update ● Delete ▓
▓ type safety: 100% ✓ ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

TypeScript ilə Supabase inteqrasiyası — tam tip təhlükəsizliyi

Supabase + TypeScript birlikdə işlədəndə runtime xətaları minimuma enir. Database-dən gələn hər sətir tipli olur. Necə? Bu məqalədə.

typescript.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ TYPESCRIPT ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ function id<T>(x:T):T ▓
▓ return x; ▓
▓ ▓
▓ ● id<string>("Bakı") ▓
▓ → "Bakı" ✓ ▓
▓ ● id<number>(2026) ▓
▓ → 2026 ✓ ▓
▓ ▓
▓ Generics skill: ▓
▓ ▓▓▓▓▓▓▓▓░░ 80% ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

TypeScript Generics — Nədir, Niyə Lazımdır, Necə İstifadə Olunur?

TypeScript generics-i başa düşmək Bakıda frontend və backend vakansiyaların 70%-ində tələb olunan skilldir. Bu bələdçi ilə generics-i bir dəfəlik öyrən.

← Bloqa qayıt