JavaScript-dən TypeScript-ə Keçid: Addım-Addım Praktiki Plan
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: true və strict: 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: true — null və undefined 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:
bashnpm 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ə
anyyazmaq — bunu etsən, TypeScript-in mənası qalmır.anyistifadəsiniunknownilə ə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 üçüntypeistifadə 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əf | Fayl sayı |
|---|---|---|
| 1 | TypeScript quraşdır, tsconfig yarat, 1 utility faylı migrate et | 1-3 |
| 2 | Bütün utility/helper faylları migrate et | 5-10 |
| 3 | API layer / service faylları migrate et, noImplicitAny aç | 5-10 |
| 4 | Component / route faylları migrate et, strictNullChecks aç | 10-15 |
| 5 | Test fayllarını migrate et, strict: true aç | 5-10 |
| 6 | allowJs: 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
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 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 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.