<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>https://wiki.erp.kyiv.ua/index.php?action=history&amp;feed=atom&amp;title=TypeScript</id>
	<title>TypeScript - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.erp.kyiv.ua/index.php?action=history&amp;feed=atom&amp;title=TypeScript"/>
	<link rel="alternate" type="text/html" href="https://wiki.erp.kyiv.ua/index.php?title=TypeScript&amp;action=history"/>
	<updated>2026-05-12T06:57:04Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.erp.kyiv.ua/index.php?title=TypeScript&amp;diff=924&amp;oldid=prev</id>
		<title>R: Первинна публікація</title>
		<link rel="alternate" type="text/html" href="https://wiki.erp.kyiv.ua/index.php?title=TypeScript&amp;diff=924&amp;oldid=prev"/>
		<updated>2026-05-06T17:24:02Z</updated>

		<summary type="html">&lt;p&gt;Первинна публікація&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;TypeScript&amp;#039;&amp;#039;&amp;#039; — це мова програмування, яка розширює &amp;#039;&amp;#039;&amp;#039;[[JavaScript]]&amp;#039;&amp;#039;&amp;#039; статичною типізацією. Вона дозволяє писати JavaScript-код із типами, знаходити частину помилок ще до запуску програми, зручніше працювати у великих проєктах і отримувати кращу підтримку редактора коду.&lt;br /&gt;
&lt;br /&gt;
TypeScript створений компанією &amp;#039;&amp;#039;&amp;#039;Microsoft&amp;#039;&amp;#039;&amp;#039; і компілюється у звичайний JavaScript, який може виконуватися в браузері, Node.js, Bun, Deno та інших JavaScript-середовищах.&amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;TypeScript — це JavaScript із типами, який робить великі проєкти зрозумілішими, безпечнішими й легшими для підтримки.&amp;#039;&amp;#039;&amp;#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Коротко ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Параметр&lt;br /&gt;
!Значення&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Назва&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|TypeScript&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Тип&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Статично типізована надмножина JavaScript&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Розробник&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Microsoft&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Перший публічний реліз&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|2012 рік&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Основна ідея&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Додати до JavaScript систему типів і кращі інструменти для великих проєктів&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Компілюється у&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|JavaScript&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Основні сфери&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Frontend, backend, full-stack, enterprise web, Node.js, React, Angular, Vue, NestJS&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Складність для новачків&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Середня&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Офіційний сайт&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|https://www.typescriptlang.org/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Головна ідея TypeScript ==&lt;br /&gt;
JavaScript дуже гнучкий. Це добре для швидкого старту, але у великих проєктах гнучкість може перетворитися на проблему.&lt;br /&gt;
&lt;br /&gt;
У JavaScript можна написати так:&amp;lt;pre&amp;gt;&lt;br /&gt;
function add(a, b) {&lt;br /&gt;
  return a + b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
console.log(add(5, 7));&lt;br /&gt;
console.log(add(&amp;quot;5&amp;quot;, &amp;quot;7&amp;quot;));&lt;br /&gt;
&amp;lt;/pre&amp;gt;У першому випадку результат буде числом.  У другому — рядком.&lt;br /&gt;
&lt;br /&gt;
JavaScript дозволяє це, але в реальному проєкті така поведінка може стати джерелом помилок.&lt;br /&gt;
&lt;br /&gt;
TypeScript дозволяє явно сказати:&amp;lt;pre&amp;gt;&lt;br /&gt;
function add(a: number, b: number): number {&lt;br /&gt;
  return a + b;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
console.log(add(5, 7));&lt;br /&gt;
// console.log(add(&amp;quot;5&amp;quot;, &amp;quot;7&amp;quot;)); // TypeScript покаже помилку&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;TypeScript не змінює природу JavaScript. Він додає шар перевірки, який допомагає знайти помилки раніше.&amp;#039;&amp;#039;&amp;#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Важливі акценти ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Статус&lt;br /&gt;
!Теза&lt;br /&gt;
!Пояснення&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#d4edda; color:#155724; font-weight:bold;&amp;quot; |Ключове&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;TypeScript — це не заміна JavaScript, а його розширення&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Увесь коректний JavaScript може бути частиною TypeScript-проєкту, але TypeScript додає типи.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#d4edda; color:#155724; font-weight:bold;&amp;quot; |Ключове&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;TypeScript компілюється у JavaScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Браузери напряму виконують JavaScript, тому TypeScript потрібно транслювати.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#d4edda; color:#155724; font-weight:bold;&amp;quot; |Ключове&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;TypeScript особливо корисний у великих проєктах&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Типи допомагають команді краще розуміти структуру коду.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#d4edda; color:#155724; font-weight:bold;&amp;quot; |Ключове&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;TypeScript покращує роботу IDE&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Автодоповнення, refactoring, підказки й навігація стають значно кращими.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fff3cd; color:#856404; font-weight:bold;&amp;quot; |Важливо&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;TypeScript не гарантує відсутність усіх помилок&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Він перевіряє типи, але не замінює тести, code review і правильну архітектуру.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f8d7da; color:#721c24; font-weight:bold;&amp;quot; |Увага&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Погані типи можуть створити ілюзію безпеки&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Якщо всюди використовувати &amp;lt;code&amp;gt;any&amp;lt;/code&amp;gt;, користь TypeScript різко зменшується.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Історія ==&lt;br /&gt;
TypeScript був створений у Microsoft як відповідь на проблему масштабування JavaScript у великих застосунках.&lt;br /&gt;
&lt;br /&gt;
JavaScript став мовою не тільки для невеликих скриптів у браузері, а й для великих frontend-застосунків, backend-сервісів, SPA, корпоративних систем і full-stack-проєктів.&lt;br /&gt;
&lt;br /&gt;
У таких умовах виникла потреба в:&lt;br /&gt;
&lt;br /&gt;
* статичній перевірці типів;&lt;br /&gt;
* кращій підтримці IDE;&lt;br /&gt;
* безпечнішому refactoring;&lt;br /&gt;
* зрозумілішій структурі даних;&lt;br /&gt;
* зменшенні випадкових помилок;&lt;br /&gt;
* підтримці великих команд.&lt;br /&gt;
&lt;br /&gt;
== TypeScript і JavaScript ==&lt;br /&gt;
TypeScript тісно повʼязаний із JavaScript.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!JavaScript&lt;br /&gt;
!TypeScript&lt;br /&gt;
|-&lt;br /&gt;
|Динамічна типізація&lt;br /&gt;
|Статична типізація поверх JavaScript&lt;br /&gt;
|-&lt;br /&gt;
|Код виконується напряму в браузері або runtime&lt;br /&gt;
|Код компілюється у JavaScript&lt;br /&gt;
|-&lt;br /&gt;
|Швидший старт&lt;br /&gt;
|Кращий контроль у великих проєктах&lt;br /&gt;
|-&lt;br /&gt;
|Менше налаштувань&lt;br /&gt;
|Потрібен компілятор або build process&lt;br /&gt;
|-&lt;br /&gt;
|Помилки типів часто видно під час виконання&lt;br /&gt;
|Багато помилок видно ще до запуску&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;JavaScript дає свободу. TypeScript додає правила, які допомагають не загубитися в цій свободі.&amp;#039;&amp;#039;&amp;#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Для чого використовується TypeScript ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Напрям&lt;br /&gt;
!Як використовується TypeScript&lt;br /&gt;
!Приклади&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Frontend&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Створення великих web-інтерфейсів&lt;br /&gt;
|React, Angular, Vue, Svelte&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Backend&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Серверні API, бізнес-логіка, мікросервіси&lt;br /&gt;
|Node.js, NestJS, Fastify, Express&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Full-stack&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Один типізований стек для клієнта й сервера&lt;br /&gt;
|Next.js, Nuxt, Remix, SvelteKit&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Enterprise web&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Великі корпоративні системи з багатьма командами&lt;br /&gt;
|CRM, ERP, адмінпанелі, кабінети користувачів&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Mobile&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Кросплатформні застосунки&lt;br /&gt;
|React Native, Expo, Ionic&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Desktop&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Desktop-застосунки на web-технологіях&lt;br /&gt;
|Electron, Tauri&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;API-контракти&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Типізація запитів, відповідей, DTO, моделей&lt;br /&gt;
|OpenAPI, tRPC, GraphQL&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Бібліотеки&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Створення npm-пакетів із типами&lt;br /&gt;
|UI kits, SDK, internal libraries&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Популярність TypeScript ==&lt;br /&gt;
TypeScript став одним із головних стандартів сучасної web-розробки.&lt;br /&gt;
&lt;br /&gt;
Він активно використовується у frontend, backend, full-stack і enterprise-проєктах. Особливо швидко TypeScript поширився в екосистемах React, Angular, Vue, Next.js, NestJS та Node.js.&lt;br /&gt;
&lt;br /&gt;
TypeScript часто обирають у великих командах, де важливі підтримка коду, зрозумілі API-контракти, безпечний refactoring і довгий життєвий цикл продукту.&lt;br /&gt;
&lt;br /&gt;
== Чому TypeScript став популярним ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Причина&lt;br /&gt;
!Пояснення&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Великі frontend-проєкти&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|React, Angular, Vue та інші фреймворки активно використовують TypeScript.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Краща підтримка редакторів&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|IDE краще підказує властивості, типи, помилки й варіанти refactoring.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Менше випадкових помилок&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Частину проблем видно ще до запуску.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Краща документація коду&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Типи показують, які дані очікує функція або компонент.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Зручність для команд&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Новому розробнику легше зрозуміти структуру проєкту.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Full-stack типізація&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Типи можна використовувати і на frontend, і на backend.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;AI та agentic coding&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Типізований код легше аналізувати інструментам і AI-асистентам.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Основні поняття TypeScript ==&lt;br /&gt;
&lt;br /&gt;
=== Типи ===&lt;br /&gt;
Тип описує, яке значення може мати змінна, параметр або результат функції.&amp;lt;pre&amp;gt;&lt;br /&gt;
let username: string = &amp;quot;Anna&amp;quot;;&lt;br /&gt;
let age: number = 17;&lt;br /&gt;
let isActive: boolean = true;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Типи параметрів і результату функції ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function greet(name: string): string {&lt;br /&gt;
  return `Привіт, ${name}`;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Масиви ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
const numbers: number[] = [1, 2, 3];&lt;br /&gt;
const names: string[] = [&amp;quot;Anna&amp;quot;, &amp;quot;Oleh&amp;quot;, &amp;quot;Maria&amp;quot;];&lt;br /&gt;
&amp;lt;/pre&amp;gt;Альтернативний запис:&amp;lt;pre&amp;gt;&lt;br /&gt;
const numbers: Array&amp;lt;number&amp;gt; = [1, 2, 3];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Обʼєкти ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
const user: { name: string; age: number } = {&lt;br /&gt;
  name: &amp;quot;Anna&amp;quot;,&lt;br /&gt;
  age: 17&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interface ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Interface&amp;#039;&amp;#039;&amp;#039; описує форму обʼєкта.&amp;lt;pre&amp;gt;&lt;br /&gt;
interface User {&lt;br /&gt;
  id: number;&lt;br /&gt;
  name: string;&lt;br /&gt;
  email: string;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const user: User = {&lt;br /&gt;
  id: 1,&lt;br /&gt;
  name: &amp;quot;Anna&amp;quot;,&lt;br /&gt;
  email: &amp;quot;anna@example.com&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Type alias ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type alias&amp;#039;&amp;#039;&amp;#039; дозволяє створювати власні типи.&amp;lt;pre&amp;gt;&lt;br /&gt;
type UserRole = &amp;quot;admin&amp;quot; | &amp;quot;manager&amp;quot; | &amp;quot;user&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
type User = {&lt;br /&gt;
  id: number;&lt;br /&gt;
  name: string;&lt;br /&gt;
  role: UserRole;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Union types ===&lt;br /&gt;
Union type дозволяє значенню мати один із кількох типів.&amp;lt;pre&amp;gt;&lt;br /&gt;
function printId(id: number | string): void {&lt;br /&gt;
  console.log(`ID: ${id}`);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Literal types ===&lt;br /&gt;
Literal type дозволяє обмежити значення конкретними варіантами.&amp;lt;pre&amp;gt;&lt;br /&gt;
type Status = &amp;quot;draft&amp;quot; | &amp;quot;published&amp;quot; | &amp;quot;archived&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const status: Status = &amp;quot;published&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional properties ===&lt;br /&gt;
Необовʼязкові властивості позначаються знаком &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt;.&amp;lt;pre&amp;gt;&lt;br /&gt;
interface Product {&lt;br /&gt;
  id: number;&lt;br /&gt;
  name: string;&lt;br /&gt;
  description?: string;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generics ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Generics&amp;#039;&amp;#039;&amp;#039; дозволяють створювати універсальні типізовані функції, класи й компоненти.&amp;lt;pre&amp;gt;&lt;br /&gt;
function identity&amp;lt;T&amp;gt;(value: T): T {&lt;br /&gt;
  return value;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const numberValue = identity&amp;lt;number&amp;gt;(10);&lt;br /&gt;
const textValue = identity&amp;lt;string&amp;gt;(&amp;quot;Hello&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== any, unknown і never ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Тип&lt;br /&gt;
!Пояснення&lt;br /&gt;
!Коли використовувати&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;any&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Вимикає перевірку типів&lt;br /&gt;
|Краще уникати або використовувати тимчасово&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;unknown&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Безпечніша альтернатива &amp;lt;code&amp;gt;any&amp;lt;/code&amp;gt;&lt;br /&gt;
|Коли тип невідомий і його треба перевірити&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;never&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Значення, яке ніколи не має зʼявитися&lt;br /&gt;
|Для неможливих станів або функцій, які не повертаються&lt;br /&gt;
|}&lt;br /&gt;
Приклад &amp;lt;code&amp;gt;unknown&amp;lt;/code&amp;gt;:&amp;lt;pre&amp;gt;&lt;br /&gt;
function handleValue(value: unknown): void {&lt;br /&gt;
  if (typeof value === &amp;quot;string&amp;quot;) {&lt;br /&gt;
    console.log(value.toUpperCase());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TypeScript compiler ==&lt;br /&gt;
TypeScript використовує компілятор &amp;lt;code&amp;gt;tsc&amp;lt;/code&amp;gt;, який перевіряє типи й перетворює TypeScript у JavaScript.&lt;br /&gt;
&lt;br /&gt;
Встановлення TypeScript:&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install typescript --save-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;Перевірка версії:&amp;lt;pre&amp;gt;&lt;br /&gt;
npx tsc --version&lt;br /&gt;
&amp;lt;/pre&amp;gt;Компіляція файлу:&amp;lt;pre&amp;gt;&lt;br /&gt;
npx tsc index.ts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== tsconfig.json ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;tsconfig.json&amp;#039;&amp;#039;&amp;#039; — головний конфігураційний файл TypeScript-проєкту.&lt;br /&gt;
&lt;br /&gt;
Створення:&amp;lt;pre&amp;gt;&lt;br /&gt;
npx tsc --init&lt;br /&gt;
&amp;lt;/pre&amp;gt;Приклад базового конфігу:&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;compilerOptions&amp;quot;: {&lt;br /&gt;
    &amp;quot;target&amp;quot;: &amp;quot;ES2022&amp;quot;,&lt;br /&gt;
    &amp;quot;module&amp;quot;: &amp;quot;ESNext&amp;quot;,&lt;br /&gt;
    &amp;quot;strict&amp;quot;: true,&lt;br /&gt;
    &amp;quot;moduleResolution&amp;quot;: &amp;quot;Bundler&amp;quot;,&lt;br /&gt;
    &amp;quot;skipLibCheck&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;include&amp;quot;: [&amp;quot;src&amp;quot;]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Strict mode ==&lt;br /&gt;
У TypeScript важливо вмикати строгий режим.&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;compilerOptions&amp;quot;: {&lt;br /&gt;
    &amp;quot;strict&amp;quot;: true&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;TypeScript без strict mode — це TypeScript із напіввимкненими гальмами.&amp;#039;&amp;#039;&amp;#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Приклад frontend-компонента на TypeScript ==&lt;br /&gt;
Приклад React-компонента:&amp;lt;pre&amp;gt;&lt;br /&gt;
type ButtonProps = {&lt;br /&gt;
  title: string;&lt;br /&gt;
  onClick: () =&amp;gt; void;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export function Button({ title, onClick }: ButtonProps) {&lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;button onClick={onClick}&amp;gt;&lt;br /&gt;
      {title}&lt;br /&gt;
    &amp;lt;/button&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Приклад backend API на TypeScript ==&lt;br /&gt;
Приклад Express API:&amp;lt;pre&amp;gt;&lt;br /&gt;
import express, { Request, Response } from &amp;quot;express&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const app = express();&lt;br /&gt;
&lt;br /&gt;
app.get(&amp;quot;/&amp;quot;, (request: Request, response: Response) =&amp;gt; {&lt;br /&gt;
  response.json({ message: &amp;quot;Hello from TypeScript API&amp;quot; });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
app.listen(3000, () =&amp;gt; {&lt;br /&gt;
  console.log(&amp;quot;API is running on http://localhost:3000&amp;quot;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TypeScript і React ==&lt;br /&gt;
TypeScript дуже часто використовується з React.&lt;br /&gt;
&lt;br /&gt;
Причини:&lt;br /&gt;
&lt;br /&gt;
* типізація props;&lt;br /&gt;
* типізація state;&lt;br /&gt;
* кращі підказки в IDE;&lt;br /&gt;
* легший refactoring;&lt;br /&gt;
* зменшення помилок у компонентах;&lt;br /&gt;
* зручність для design systems.&lt;br /&gt;
&lt;br /&gt;
Приклад:&amp;lt;pre&amp;gt;&lt;br /&gt;
type UserCardProps = {&lt;br /&gt;
  name: string;&lt;br /&gt;
  email: string;&lt;br /&gt;
  isActive: boolean;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export function UserCard({ name, email, isActive }: UserCardProps) {&lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;h2&amp;gt;{name}&amp;lt;/h2&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;{email}&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;span&amp;gt;{isActive ? &amp;quot;Активний&amp;quot; : &amp;quot;Неактивний&amp;quot;}&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TypeScript і Angular ==&lt;br /&gt;
Angular із самого початку активно використовує TypeScript.&lt;br /&gt;
&lt;br /&gt;
Для Angular TypeScript важливий через:&lt;br /&gt;
&lt;br /&gt;
* класи;&lt;br /&gt;
* decorators;&lt;br /&gt;
* dependency injection;&lt;br /&gt;
* компоненти;&lt;br /&gt;
* сервіси;&lt;br /&gt;
* типізовані форми;&lt;br /&gt;
* enterprise-структуру проєкту.&lt;br /&gt;
&lt;br /&gt;
== TypeScript і Vue ==&lt;br /&gt;
Vue також підтримує TypeScript.&lt;br /&gt;
&lt;br /&gt;
Приклад Vue component із &amp;lt;code&amp;gt;script setup&amp;lt;/code&amp;gt;:&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script setup lang=&amp;quot;ts&amp;quot;&amp;gt;&lt;br /&gt;
type Props = {&lt;br /&gt;
  title: string;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
defineProps&amp;lt;Props&amp;gt;();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;template&amp;gt;&lt;br /&gt;
  &amp;lt;h1&amp;gt;{{ title }}&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/template&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TypeScript у backend ==&lt;br /&gt;
На backend TypeScript часто використовують із:&lt;br /&gt;
&lt;br /&gt;
* Node.js;&lt;br /&gt;
* NestJS;&lt;br /&gt;
* Express;&lt;br /&gt;
* Fastify;&lt;br /&gt;
* Prisma;&lt;br /&gt;
* TypeORM;&lt;br /&gt;
* tRPC;&lt;br /&gt;
* GraphQL;&lt;br /&gt;
* Zod;&lt;br /&gt;
* PostgreSQL;&lt;br /&gt;
* Redis.&lt;br /&gt;
&lt;br /&gt;
Типова структура backend-проєкту:&amp;lt;pre&amp;gt;&lt;br /&gt;
api/&lt;br /&gt;
├── src/&lt;br /&gt;
│   ├── controllers/&lt;br /&gt;
│   ├── services/&lt;br /&gt;
│   ├── routes/&lt;br /&gt;
│   ├── models/&lt;br /&gt;
│   ├── dto/&lt;br /&gt;
│   └── main.ts&lt;br /&gt;
├── tests/&lt;br /&gt;
├── package.json&lt;br /&gt;
├── tsconfig.json&lt;br /&gt;
└── README.md&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TypeScript і API-контракти ==&lt;br /&gt;
TypeScript особливо корисний для опису API-контрактів.&lt;br /&gt;
&lt;br /&gt;
Наприклад:&amp;lt;pre&amp;gt;&lt;br /&gt;
type CreateUserRequest = {&lt;br /&gt;
  name: string;&lt;br /&gt;
  email: string;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
type CreateUserResponse = {&lt;br /&gt;
  id: number;&lt;br /&gt;
  name: string;&lt;br /&gt;
  email: string;&lt;br /&gt;
  createdAt: string;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;Так легше контролювати, які дані frontend відправляє на backend і що backend повертає.&lt;br /&gt;
&lt;br /&gt;
== TypeScript і runtime validation ==&lt;br /&gt;
Важливо розуміти:&amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;TypeScript перевіряє типи під час розробки, але не перевіряє дані автоматично під час виконання.&amp;#039;&amp;#039;&amp;#039;&amp;lt;/blockquote&amp;gt;Якщо дані приходять з API, форми або файлу, їх треба перевіряти окремо.&lt;br /&gt;
&lt;br /&gt;
Популярні бібліотеки:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[Zod]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[Yup]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[Valibot]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[io-ts]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Приклад Zod:&amp;lt;pre&amp;gt;&lt;br /&gt;
import { z } from &amp;quot;zod&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const UserSchema = z.object({&lt;br /&gt;
  name: z.string(),&lt;br /&gt;
  email: z.string().email()&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
const user = UserSchema.parse({&lt;br /&gt;
  name: &amp;quot;Anna&amp;quot;,&lt;br /&gt;
  email: &amp;quot;anna@example.com&amp;quot;&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TypeScript і бази даних ==&lt;br /&gt;
TypeScript часто використовують з ORM та query builder.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Інструмент&lt;br /&gt;
!Для чого використовується&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Prisma]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Type-safe ORM для Node.js і TypeScript&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[TypeORM]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|ORM для TypeScript і JavaScript&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Drizzle ORM]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Type-safe SQL ORM&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Kysely]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Type-safe SQL query builder&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[MikroORM]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|ORM для TypeScript&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TypeScript і full-stack типізація ==&lt;br /&gt;
Одна з найсильніших ідей TypeScript — спільні типи між frontend і backend.&lt;br /&gt;
&lt;br /&gt;
Приклад:&amp;lt;pre&amp;gt;&lt;br /&gt;
shared/&lt;br /&gt;
└── types/&lt;br /&gt;
    └── user.ts&lt;br /&gt;
&lt;br /&gt;
frontend/&lt;br /&gt;
backend/&lt;br /&gt;
&amp;lt;/pre&amp;gt;Файл &amp;lt;code&amp;gt;shared/types/user.ts&amp;lt;/code&amp;gt;:&amp;lt;pre&amp;gt;&lt;br /&gt;
export type User = {&lt;br /&gt;
  id: number;&lt;br /&gt;
  name: string;&lt;br /&gt;
  email: string;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;Цей тип можна використати і на клієнті, і на сервері.&lt;br /&gt;
&lt;br /&gt;
== Популярні фреймворки TypeScript-екосистеми ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
!Інструмент&lt;br /&gt;
!Напрям&lt;br /&gt;
!Для чого використовується&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[React]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Frontend&lt;br /&gt;
|UI-компоненти й SPA&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Angular]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Frontend&lt;br /&gt;
|Enterprise frontend&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Vue.js]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Frontend&lt;br /&gt;
|Гнучкі web-інтерфейси&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Next.js]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Full-stack&lt;br /&gt;
|React full-stack, SSR, SSG&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Nuxt]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Full-stack&lt;br /&gt;
|Vue full-stack&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[SvelteKit]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Full-stack&lt;br /&gt;
|Full-stack застосунки на Svelte&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[NestJS]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Backend&lt;br /&gt;
|Структурований Node.js backend&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Express.js]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Backend&lt;br /&gt;
|Простий backend на Node.js&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Fastify]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Backend&lt;br /&gt;
|Швидкі API&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[tRPC]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Full-stack API&lt;br /&gt;
|End-to-end type-safe API&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Prisma]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Database&lt;br /&gt;
|Type-safe ORM&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Zod]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Validation&lt;br /&gt;
|Runtime validation і схеми&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TypeScript і tooling ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Інструмент&lt;br /&gt;
!Для чого&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[tsc]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Офіційний TypeScript compiler&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[ESLint]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Аналіз стилю й помилок коду&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Prettier]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Форматування коду&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Vite]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Швидкий frontend build tool&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Webpack]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Bundler для складних frontend-проєктів&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Vitest]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Тестування&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Jest]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Unit-тестування&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[Playwright]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|End-to-end тестування&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;[[tsx]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Запуск TypeScript-файлів без окремої компіляції в dev-середовищі&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Переваги TypeScript ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Перевага&lt;br /&gt;
!Пояснення&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Менше помилок&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Частину помилок видно ще до запуску.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Краща підтримка IDE&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Автодоповнення, підказки, навігація, refactoring.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Зрозуміліші API&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Типи показують, які дані очікує функція або endpoint.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Зручність для команд&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Новим розробникам легше читати великий код.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Краще масштабування&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Підходить для великих frontend і backend-проєктів.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Документація через типи&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Типи частково пояснюють код самі.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Сумісність із JavaScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|TypeScript-компілятор генерує JavaScript.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Недоліки TypeScript ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Недолік&lt;br /&gt;
!Пояснення&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Потрібне налаштування&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Потрібен tsconfig, build step і tooling.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Поріг входу вищий за JavaScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Треба розуміти і JavaScript, і систему типів.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Типи можуть бути складними&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Generics, conditional types і utility types можуть ускладнювати код.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Не перевіряє runtime-дані&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Дані з API треба перевіряти окремо.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Можна зловживати any&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Якщо всюди писати &amp;lt;code&amp;gt;any&amp;lt;/code&amp;gt;, користь типізації зникає.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Компіляція займає час&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|У великих проєктах type checking може бути відчутним.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Типові помилки новачків ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Помилка&lt;br /&gt;
!Як правильно&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Використовувати &amp;lt;code&amp;gt;any&amp;lt;/code&amp;gt; всюди&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Краще писати точні типи або використовувати &amp;lt;code&amp;gt;unknown&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Думати, що TypeScript перевіряє все в runtime&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Для зовнішніх даних потрібна runtime validation.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Не вмикати strict mode&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Увімкнути &amp;lt;code&amp;gt;&amp;quot;strict&amp;quot;: true&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Описувати занадто складні типи без потреби&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Типи мають допомагати, а не перетворюватися на головоломку.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Не знати JavaScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|TypeScript не замінює знання JavaScript.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Коли TypeScript — хороший вибір ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Задача&lt;br /&gt;
!Чи підходить TypeScript?&lt;br /&gt;
|-&lt;br /&gt;
|Великий frontend&lt;br /&gt;
| style=&amp;quot;background:#d4edda; color:#155724; font-weight:bold;&amp;quot; |Дуже добре&lt;br /&gt;
|-&lt;br /&gt;
|Enterprise web&lt;br /&gt;
| style=&amp;quot;background:#d4edda; color:#155724; font-weight:bold;&amp;quot; |Дуже добре&lt;br /&gt;
|-&lt;br /&gt;
|Full-stack web&lt;br /&gt;
| style=&amp;quot;background:#d4edda; color:#155724; font-weight:bold;&amp;quot; |Дуже добре&lt;br /&gt;
|-&lt;br /&gt;
|Node.js backend&lt;br /&gt;
| style=&amp;quot;background:#d4edda; color:#155724; font-weight:bold;&amp;quot; |Добре&lt;br /&gt;
|-&lt;br /&gt;
|React / Angular / Vue проєкти&lt;br /&gt;
| style=&amp;quot;background:#d4edda; color:#155724; font-weight:bold;&amp;quot; |Дуже добре&lt;br /&gt;
|-&lt;br /&gt;
|Маленький одноразовий скрипт&lt;br /&gt;
| style=&amp;quot;background:#fff3cd; color:#856404; font-weight:bold;&amp;quot; |Можливо, але JavaScript може бути швидшим&lt;br /&gt;
|-&lt;br /&gt;
|AI / Data Science&lt;br /&gt;
| style=&amp;quot;background:#fff3cd; color:#856404; font-weight:bold;&amp;quot; |Не основний вибір&lt;br /&gt;
|-&lt;br /&gt;
|Low-level / drivers&lt;br /&gt;
| style=&amp;quot;background:#f8d7da; color:#721c24; font-weight:bold;&amp;quot; |Не підходить&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TypeScript у бізнесі ==&lt;br /&gt;
TypeScript часто використовують у бізнес-системах:&lt;br /&gt;
&lt;br /&gt;
* CRM;&lt;br /&gt;
* ERP-інтерфейси;&lt;br /&gt;
* адмінпанелі;&lt;br /&gt;
* SaaS-платформи;&lt;br /&gt;
* кабінети клієнтів;&lt;br /&gt;
* dashboard;&lt;br /&gt;
* фінансові системи;&lt;br /&gt;
* e-commerce;&lt;br /&gt;
* інтеграційні API;&lt;br /&gt;
* внутрішні корпоративні застосунки.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;У бізнесі TypeScript цінний тим, що зменшує хаос у великих JavaScript-проєктах.&amp;#039;&amp;#039;&amp;#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TypeScript у ERP та корпоративних системах ==&lt;br /&gt;
Для ERP, CRM і внутрішніх бізнес-застосунків TypeScript корисний через:&lt;br /&gt;
&lt;br /&gt;
* складні форми;&lt;br /&gt;
* багато типів документів;&lt;br /&gt;
* ролі й права доступу;&lt;br /&gt;
* складні таблиці;&lt;br /&gt;
* API-контракти;&lt;br /&gt;
* інтеграції;&lt;br /&gt;
* велику кількість бізнес-правил;&lt;br /&gt;
* довгий життєвий цикл проєкту;&lt;br /&gt;
* роботу кількох команд.&lt;br /&gt;
&lt;br /&gt;
Типи допомагають описувати:&amp;lt;pre&amp;gt;&lt;br /&gt;
type Invoice = {&lt;br /&gt;
  id: number;&lt;br /&gt;
  number: string;&lt;br /&gt;
  date: string;&lt;br /&gt;
  customerId: number;&lt;br /&gt;
  totalAmount: number;&lt;br /&gt;
  status: &amp;quot;draft&amp;quot; | &amp;quot;posted&amp;quot; | &amp;quot;cancelled&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Альтернативи TypeScript ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Якщо потрібно&lt;br /&gt;
!Альтернативи&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Простий frontend без типів&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|JavaScript&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Backend enterprise&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Java, C#, Go&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;AI / Data Science&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Python, R, Julia&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Mobile Android&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Kotlin&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Mobile iOS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Swift&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;High-performance backend&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Go, Rust&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Системне програмування&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|C, C++, Rust, Zig&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TypeScript у порівнянні з іншими мовами ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Мова&lt;br /&gt;
!Порівняння з TypeScript&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|TypeScript додає типи й краще підходить для великих проєктів.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Python&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Python сильніший в AI й data science; TypeScript сильніший у web і frontend.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Java&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Java суворіша й традиційна для enterprise; TypeScript гнучкіший у web-екосистемі.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;C#&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|C# сильний у .NET; TypeScript сильний у frontend і full-stack JavaScript.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Go&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Go простий і продуктивний для backend; TypeScript зручний для full-stack web.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Kotlin&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Kotlin сильний для Android і JVM; TypeScript — для web.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Рекомендований шлях навчання TypeScript ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Етап&lt;br /&gt;
!Що вивчати&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Основи JavaScript: змінні, функції, обʼєкти, масиви&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|ES Modules, npm, package.json&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Базові типи TypeScript: string, number, boolean, arrays&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|type, interface, optional properties&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Union types, literal types, narrowing&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Generics&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|tsconfig.json і strict mode&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|TypeScript із React, Vue або Angular&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|TypeScript на backend: Node.js, NestJS або Express&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|Runtime validation: Zod або Valibot&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|Тестування, ESLint, Prettier, CI&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Мінімальний набір для першого TypeScript-проєкту ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Компонент&lt;br /&gt;
!Рекомендація&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Редактор&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|VS Code&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Runtime&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Node.js, Bun або Deno&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Менеджер пакетів&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|npm, pnpm або yarn&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Компілятор&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|TypeScript&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Конфігурація&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|tsconfig.json із &amp;lt;code&amp;gt;strict: true&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Форматування&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Prettier&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Linting&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|ESLint&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Тестування&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Vitest або Jest&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Контроль версій&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Приклад package.json ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;typescript-app&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;1.0.0&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;module&amp;quot;,&lt;br /&gt;
  &amp;quot;scripts&amp;quot;: {&lt;br /&gt;
    &amp;quot;dev&amp;quot;: &amp;quot;tsx src/main.ts&amp;quot;,&lt;br /&gt;
    &amp;quot;build&amp;quot;: &amp;quot;tsc&amp;quot;,&lt;br /&gt;
    &amp;quot;typecheck&amp;quot;: &amp;quot;tsc --noEmit&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;devDependencies&amp;quot;: {&lt;br /&gt;
    &amp;quot;typescript&amp;quot;: &amp;quot;^5.9.0&amp;quot;,&lt;br /&gt;
    &amp;quot;tsx&amp;quot;: &amp;quot;^4.0.0&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Простими словами ==&lt;br /&gt;
JavaScript дозволяє швидко писати код.  TypeScript допомагає не загубитися, коли коду стає багато.&amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;TypeScript — це як креслення для JavaScript-проєкту: він показує, які дані куди йдуть, що функція очікує, що повертає і де може бути помилка.&amp;#039;&amp;#039;&amp;#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Висновок ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TypeScript&amp;#039;&amp;#039;&amp;#039; — одна з найважливіших мов сучасної web-розробки.&lt;br /&gt;
&lt;br /&gt;
Вона особливо сильна там, де потрібні:&lt;br /&gt;
&lt;br /&gt;
* великі frontend-застосунки;&lt;br /&gt;
* full-stack web;&lt;br /&gt;
* командна розробка;&lt;br /&gt;
* надійні API-контракти;&lt;br /&gt;
* довгострокова підтримка коду;&lt;br /&gt;
* enterprise-проєкти;&lt;br /&gt;
* React, Angular, Vue, Next.js, NestJS;&lt;br /&gt;
* кращі інструменти й менше випадкових помилок.&lt;br /&gt;
&lt;br /&gt;
TypeScript не замінює JavaScript, а робить його більш контрольованим і придатним для великих систем.&amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;Якщо JavaScript — це мова вебу, то TypeScript — це спосіб будувати великий веб без хаосу.&amp;#039;&amp;#039;&amp;#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Джерела ==&lt;br /&gt;
&lt;br /&gt;
* Офіційний сайт TypeScript: https://www.typescriptlang.org/&lt;br /&gt;
* TypeScript Handbook: https://www.typescriptlang.org/docs/handbook/intro.html&lt;br /&gt;
* TypeScript Documentation: https://www.typescriptlang.org/docs/&lt;br /&gt;
* Stack Overflow Developer Survey: https://survey.stackoverflow.co/&lt;br /&gt;
* GitHub Octoverse: https://octoverse.github.com/&lt;/div&gt;</summary>
		<author><name>R</name></author>
	</entry>
</feed>