TypeScript – Լրիվ ուղեցույց սկսնակից մինչև պրոֆեսիոնալ
Ի՞նչ է TypeScript
TypeScript (թարգմանաբար «Տիպավորված Սցրիպտ») — Microsoft-ի մշակած open-source ծրագրավորման լեզու է, որը ստեղծվել է 2012 թվականին որպես JavaScript-ի superset։
- TypeScript-ի նպատակն է տալ type safety, readability, և maintainability հատկապես մեծ նախագծերի համար
- TypeScript կոդը transpile է արվում սովորական JavaScript, որը համատեղելի է բոլոր browsers, Node.js և այլ runtime-ների հետ
- Աջակցում է modern features՝ classes, modules, generics, decorators, async/await, spread/rest operators, destructuring և այլն
Օրինակ TypeScript կոդ
interface User { id: number; name: string; email?: string; }
function greet(user: User): string {
return Բարև, ${user.name}!;
}
const user1: User = { id: 1, name: "Ալիս" }; console.log(greet(user1));
Այս պարզ օրինակն արդեն ցույց է տալիս, թե ինչպես TypeScript-ը կանխում է սխալներ compile-time-ի վրա, ինչն աշխատում է runtime-ի խնդիրները կանխելու համար։
Պատմություն և զարգացում
TypeScript-ի զարգացումը անցել է մի քանի կարևոր փուլերով՝
- 2012 – TypeScript 0.8՝ առաջին ռեալիզացիա
- 2014 – TypeScript 1.0, կայուն տարբերակ
- 2016 – TypeScript 2.0, ավելացվեց null-safety, strict null checks
- 2018–2024 – տարբերակներ 3.x–5.x, նոր type system, template literal types, variadic tuples, decorators, type guards
TypeScript-ն աստիճանաբար դարձել է մեծ թիմերի և enterprise նախագծերի ստանդարտ լեզու, օգտագործվում է Angular, React, Vue, Node.js, Deno, Electron և այլ πλαատֆորմներում։
Industrial Example:
- Microsoft, Slack, Asana և Airbnb օգտագործում են TypeScript իրենց large-scale projects-ում

TypeScript vs JavaScript
| TypeScript | JavaScript | Առաջարկություն | | Static compile-time | Dynamic runtime | Տիպերի ստուգում | | Հիանալի մեծ նախագծերի համար | Լավ փոքր նախագծերի համար | Maintainability | | ECMAScript + Types, Interfaces, Enums, Generics, Decorators, Namespaces | ECMAScript ստանդարտ | Features | |Compile-time type errors | Runtime errors | Error handling | | Advanced tooling, IntelliSense, auto-completion | Պահանջում է plugins | Tooling | |JS-compatible, gradual adoption | JS | Compatibility |
Եզրակացություն: TypeScript-ն ապահովում է վստահելիություն, predictability և maintainability, ինչը շատ կարևոր է երկարաժամկետ, բարդ նախագծերի համար։
Հատկություններ և ֆունկցիաներ
Static Typing
- Նպատակ՝ type safety compile-time-ում
- Օրինակ՝
function multiply(a: number, b: number): number { return a * b; }
Interfaces & Type Aliases
interface Product { id: number; title: string; price: number; }
*** Օգտագործվում է data modeling և API contracts հաստատելու համար** Union & Intersection Types
type ID = string | number; function printId(id: ID) { if (typeof id === "string") console.log(id.toUpperCase()); else console.log(id); }
- Օգտագործվում է flexible type handling-ի համար
Classes, Modules, Namespaces
class Person {
constructor(public name: string, private age: number) {}
greet() { console.log(Բարեւ, ${this.name}); }
}
- Աջակցում է OOP patterns, modularity և code organization Enums, Tuples, Literal Types
enum Role { Admin, User, Guest } const roles: [string, number] = ["Admin", 1];
- Օգնում է type-safe constants և structured data պահպանել
Մեծ նախագծերում TypeScript-ի կարևորությունը
- Bug prevention – compile-time error checking
- Code readability – types as self-documenting code
- Refactoring safety – IDE tooling with type-aware features
- Team collaboration – type contracts prevent misunderstandings
- Gradual adoption – JS → TS migration step-by-step possible
Industrial example:
- Angular, React + TypeScript projects
- Backend: Node.js + TypeScript APIs
- Enterprise apps: Slack, Asana, Microsoft Teams
TypeScript-ի առավելությունները (Advantages)
TypeScript-ն ունի մի շարք առավելություններ, որոնք այն դարձնում են շատ հարմար ծրագրավորման նախագծերի համար՝ հատկապես մեծ և enterprise-համակարգերում։ 1. Static Typing և Early Error Detection
- TypeScript-ն ապահովում է type safety, որն օգնում է հայտնաբերել սխալները դեռ compile-time-ի փուլում։
- Սա նվազեցնում է runtime bugs և մեծացնում code reliability-ն։
Օրինակ:
function divide(a: number, b: number): number { return a / b; }
console.log(divide(10, "2")); // Compile-time error
2. Better Readability և Maintainability
- TypeScript-ի type annotations կոդը դարձնում է ավելի կարդացվող և predictable։
- Մեծ նախագծերում, երբ մի քանի developer աշխատում են միասին, type contracts-ը օգնում է հասկանալ, թե ինչ data է փոխանցվում functions և components-ին։
3. Advanced Tooling և Developer Experience
- IDE-ները, ինչպիսիք են VS Code կամ WebStorm, autocomplete, refactoring tools և inline documentation տրամադրում են type-aware code-ի համար։
- Սա մեծացնում է developer productivity-ն և արագացնում bug fixing-ը։
4. Cross-Platform Compatibility
- TypeScript կոդը transpile է արվում ստանդարտ JavaScript, ինչը նշանակում է, որ կարող է աշխատել բոլոր browsers, Node.js, Deno, Electron, React Native, և web + mobile hybrid ծրագրերում։
5. Gradual Adoption
- Նոր նախագծերի համար կարելի է ամբողջությամբ TypeScript օգտագործել։
- Օգտագործում JS նախագծերում՝ աստիճանաբար ավելացնել type annotations առանց ամբողջ project-ի rewrite-ի։
6. Strong Ecosystem & Community
- TypeScript-ն ունի մեծ համայնք, հարյուրավոր DefinitelyTyped libraries, ESLint, Prettier, Webpack, Vite, Babel tooling, որն ապահովում է smooth development workflow։

TypeScript-ի սահմանափակումները (Limitations)
1. Կոմպիլացիայի ավելացված քայլ (Build Step)
- TypeScript կոդը պետք է transpile անել JavaScript։
- Սա ավելացնում է build time overhead, բայց runtime performance-ին չի ազդում։
2. Learning Curve
- Եթե թիմը միայն JS գիտի, պետք է սովորել typing system, generics, decorators, advanced type features։
3. Strict Configuration Required
- TypeScript-ն ունի tsconfig.json, որտեղ կարելի է կարգավորել strict mode, module resolution, target JS version և այլն։
- Ոչ ճիշտ configuration-ն կարող է խառնել նոր սկսնակներին։
4. Runtime Type Safety չկա
- Types հանվում են compile-time-ում։
- Runtime data (API responses, user input) validation դեռ անհրաժեշտ է։
TypeScript-ին սկսելու ուղեցույց (Getting Started)
Step 1: Ներբեռնում և տեղադրում npm install -g typescript tsc --version
Step 2: Ստեղծել նոր Project mkdir my-ts-project cd my-ts-project tsc --init
- Այս հրամանը ստեղծում է tsconfig.json, որտեղ կարելի է կարգավորել strict mode, target JS version, module system և այլն։
Step 3: Գրել առաջին TypeScript ֆայլը index.ts let message: string = "Բարև TypeScript!"; console.log(message);
- Compile to JavaScript: tsc index.ts node index.js
Step 4: Gradual Migration
- JS ֆայլերը կարող են աստիճանաբար փոխվել .ts ֆայլերի:
- Օգտագործել allowJs: true tsconfig-ում:

Լավագույն պրակտիկաներ (Best Practices)
1. Use Strict Mode
-
Enable strict mode in tsconfig.json: { "strict": true }
-
Այն օգնում է type safety, null checks, և compiler warnings։
2. Use Interfaces and Types Effectively interface Product { id: number; title: string; price: number; }
- Օգտագործել type contracts data modeling և API definitions-ի համար։
3. Generics for Reusable Code function wrapInArray<T>(item: T): T[] { return [item];
}
**4. Always Validate External Data**
- Runtime validation անհրաժեշտ է API responses, user input, forms: function validateUser(user: any): user is User { return typeof user.id === "number" && typeof user.name === "string"; }
5. Use Linters and Formatters
- ESLint + Prettier integration for consistent code style: npm install --save-dev eslint prettier eslint-config-prettier
Example Projects Using TypeScript
**Frontend Projects**
- React + TypeScript – component props type-safe, state management with Redux or Zustand
- Angular – fully built with TypeScript, strong type system
- Vue 3 – Composition API + TypeScript
Backend Projects
- Node.js + Express + TypeScript – type-safe API endpoints
- NestJS – fully typed backend framework
Enterprise Projects
- Slack, Microsoft Teams, Asana – TypeScript for maintainable, large-scale projects
Real-world Code Examples
1. Type-safe API Call interface Post { id: number; title: string; body: string; }
async function fetchPost(postId: number): Promise<Post> {
const response = await fetch(https://jsonplaceholder.typicode.com/posts/${postId});
const data: Post = await response.json();
return data;
}
fetchPost(1).then(post => console.log(post.title));
Compile-time type checking ensures API response structure matches Post interface.
2. Union Types for Flexible Functions type ID = string | number;
function printID(id: ID) { if (typeof id === "string") console.log(id.toUpperCase()); else console.log(id); }
Prevents type errors without sacrificing flexibility.
FAQ (Հաճախ տրվող հարցեր)
Q1: TypeScript կարո՞ղ է ամբողջովին փոխարինել JavaScript: A1: Ոչ, բայց այն կարող է աստիճանաբար ինտեգրվել, ու ձեր JS կոդը մնացյալը համատեղելի է TypeScript-ի հետ։
Q2: TypeScript կաշկանդո՞ւմ է runtime performance: A2: Ոչ, types հանվում են compile-time-ին, runtime-ը մնում է սովորական JavaScript։
Q3: Ինչու է TypeScript-ն գերազանցում JS-ին large-scale նախագծերում: A3: TypeScript ապահովում է type safety, maintainability, IDE tooling, predictable code, ինչը չափազանց կարևոր է թիմերի և enterprise apps-ի համար։
Եզրափակում (Conclusion)
TypeScript-ը ոչ միայն JavaScript-ի ուղղակի տարբերակ չէ, այլ հզոր գործիք, որը ապահովում է:
- Static typing և type-safe development
- Better readability, maintainability և debugging
- Gradual adoption և cross-platform compatibility
- Industrial-strength tooling և large-scale project support
Խորհուրդ: Սկսեք TypeScript քայլ առ քայլ, օգտագործեք strict mode, generics, interfaces, և միշտ validate անեք external data։