Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке "type safety"?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Type safety (типобезпека)** - властивість мови, яка гарантує, що операції над даними виконуються лише з коректними типами, і запобігає помилкам через неправильне використання значень. **Ключове:** TypeScript ловить такі помилки до запуску програми, а не в рантаймі.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## 1. Що означає "type safety" > **Type safety (типобезпека)** - це властивість мови, > яка гарантує, що **операції над даними виконуються лише з коректними типами**, > запобігаючи помилкам, пов'язаним із неправильним використанням значень. Простіше кажучи: > TypeScript стежить, щоб ти **не робив з даними того, чого робити не можна** > - наприклад, не викликав метод рядка у числа, не додавав об'єкт до масиву тощо. --- ### Приклад без типобезпеки (JavaScript) ```javascript const user = "Tim"; console.log(user.toFixed(2)); // Помилка під час виконання ``` > JavaScript не знає, що `user` - це рядок. > Помилка станеться **у рантаймі**, коли програма вже запущена. --- ### Приклад з типобезпекою (TypeScript) ```javascript const user: string = "Tim"; console.log(user.toFixed(2)); // Помилка під час компіляції ``` > TypeScript не дасть запустити програму - > він зрозуміє, що `toFixed()` існує лише у числа, а не у рядка. Помилка спіймана **до виконання коду** - програма безпечніша. --- ## 2. У чому суть типобезпеки **Type-safe** код гарантує: 1. Що значення **відповідає своєму типу**. → якщо `user: User`, то в нього є `name`, `email` тощо. 2. Що **операції** над значенням **допустимі для цього типу**. → не можна викликати `.map()` у числа. 3. Що **результати функцій передбачувані**. → якщо функція повертає `Promise<string>`, вона не поверне `number`. --- ## 3. Приклад type safety в дії ```javascript interface Product { id: number; title: string; price: number; } function printPrice(p: Product) { console.log(p.price.toFixed(2)); } printPrice({ id: 1, title: "Shirt", price: 49.9 }); // коректно printPrice({ id: 2, title: "Shoes", price: "49.9" }); // Помилка типів ``` > Другий виклик не скомпілюється, тому що `price` - рядок, а не число. > > Це і є **type safety** - захист від помилок при неправильних типах даних. --- ## 4. Що робить код "type unsafe" TypeScript стає **менш типобезпечним**, якщо використовувати "дірки" в типах: ```javascript let data: any = 5; data = "Hello"; data = { x: true }; console.log(data.toFixed(2)); // Помилка в рантаймі ``` > Тип `any` вимикає систему безпеки - компілятор перестає перевіряти типи. > > Тому `any` вважається **ворогом type safety**. --- ## 5. Як TypeScript забезпечує type safety TypeScript досягає типобезпеки через: - **строгу статичну типізацію** (перевірка типів до запуску); - **строгий режим (**`strict: true`**)**; - **контроль null та undefined** (`strictNullChecks`); - **type narrowing** (звуження типів через умови); - **readonly / const** для незмінності даних; - **Generic-типи**, що гарантують коректність зв'язків між типами. --- ## 6. Чому це важливо Type safety: - запобігає **помилкам у продакшені**; - робить код **передбачуваним і надійним**; - допомагає IDE давати **автопідказки та автодоповнення**; - полегшує **рефакторинг** і розвиток проекту; - підвищує **довговічність** коду (менше прихованих багів з часом). --- ## Підсумок > **Type safety** - це гарантія того, що твій код > **працює з правильними типами даних і виконує допустимі операції**. > > Завдяки цьому TypeScript: > > - ловить помилки **до запуску** програми, > - робить код **надійним, читабельним і передбачуваним**, > - і захищає проект від безлічі дрібних (і дорогих) багів.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.