Skip to main content

Що таке "type safety"?

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:

  • ловить помилки до запуску програми,
  • робить код надійним, читабельним і передбачуваним,
  • і захищає проект від безлічі дрібних (і дорогих) багів.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.