Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке тип (type) в TypeScript?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)У TypeScript ключове слово **`type`** використовується для створення користувацького типу - тобто нового імені для комбінації наявних типів. **Ключове:** типи не існують під час виконання, вони потрібні лише компілятору для перевірки та підказок на етапі компіляції.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## 1. Що таке `type` > У TypeScript ключове слово `type` використовується для **створення користувацького типу** > - тобто, *нового імені для комбінації наявних типів*. Це схоже на "ярлик" або "псевдонім типу" (type alias). TypeScript не додає новий об'єкт у пам'ять - це просто **опис структури даних** для перевірки на етапі компіляції. --- ### Приклад 1: простий тип (type alias) ```javascript type UserName = string; const name: UserName = "Tim"; ``` > Тут `UserName` - це просто псевдонім для типу `string`. > Типи допомагають **робити код самодокументованим**. --- ### Приклад 2: тип об'єкта ```javascript type User = { id: number; name: string; isAdmin?: boolean; // необов'язкова властивість }; const user: User = { id: 1, name: "Tim", }; ``` > TypeScript перевірить, що `user` містить потрібні поля та правильні типи. --- ## 2. `type` ≠ змінна Типи **не існують під час виконання** - вони потрібні лише компілятору для перевірки та підказок. ```javascript type Product = { id: number; title: string }; ``` Після компіляції в JS - **жодного** `type Product` **не залишиться**. --- ## 3. Типи можна об'єднувати і комбінувати Ось де `type` розкриває всю силу. --- ### Union Types (об'єднання) > Значення може бути **одного з кількох типів**: ```javascript type Status = "loading" | "success" | "error"; let current: Status = "loading"; // OK current = "fail"; // Помилка: такого значення немає ``` --- ### Intersection Types (перетин) > Об'єднує кілька типів в один "складний". ```javascript type Person = { name: string }; type Employee = { company: string }; type Worker = Person & Employee; const w: Worker = { name: "Tim", company: "Acme Inc" }; // OK ``` --- ### Типи функцій ```javascript type Sum = (a: number, b: number) => number; const add: Sum = (x, y) => x + y; ``` --- ### Типи масивів і кортежів ```javascript type Numbers = number[]; type Point = [number, number]; // кортеж (tuple) ``` --- ## 4. Різниця між `type` та `interface` | Можливість | `interface` | `type` | | --- | --- | --- | | Опис об'єктів | Так | Так | | Розширення (`extends`) | Так | Так (`&`) | | Об'єднання (merging) | Так | Ні | | Union і примітиви | Ні | Так | | Tuple і Function | Ні | Так | | Реалізація класом (`implements`) | Так | Так | > **Правило практики:** > > - Використовуй `interface` - для **об'єктів, структур і класів** > - Використовуй `type` - для **комбінацій, об'єднань і alias'ів** --- ## 5. Приклад - комбінування `type` та `interface` ```javascript interface User { id: number; name: string; } type Admin = User & { role: "admin" }; const tim: Admin = { id: 1, name: "Tim", role: "admin" }; ``` > Тут `type` використовується для розширення інтерфейсу через перетин (`&`). --- ## 6. Навіщо взагалі потрібен `type` - Робить типи **придатними для повторного використання** - Спрощує **читання і супровід** коду - Дозволяє **комбінувати і збирати** складні структури - Допомагає IDE підказувати та перевіряти типи - Робить код **самодокументованим** --- ## Підсумок > `type` - це механізм TypeScript для **створення нових користувацьких типів** > (псевдонімів), щоб описувати форму даних, об'єднувати і комбінувати типи. > > Він використовується для: > > - об'єднань (`|`), > - перетинів (`&`), > - функцій, кортежів і примітивів, > - а також для зручності та читабельності коду. > > `type` = "гнучкий конструктор для опису даних".Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.