Що таке "type safety"?
1. Що означає "type safety"
Type safety (типобезпека) - це властивість мови, яка гарантує, що операції над даними виконуються лише з коректними типами, запобігаючи помилкам, пов'язаним із неправильним використанням значень.
Простіше кажучи:
TypeScript стежить, щоб ти не робив з даними того, чого робити не можна
- наприклад, не викликав метод рядка у числа, не додавав об'єкт до масиву тощо.
Приклад без типобезпеки (JavaScript)
const user = "Tim";
console.log(user.toFixed(2)); // Помилка під час виконанняJavaScript не знає, що
user- це рядок. Помилка станеться у рантаймі, коли програма вже запущена.
Приклад з типобезпекою (TypeScript)
const user: string = "Tim";
console.log(user.toFixed(2)); // Помилка під час компіляціїTypeScript не дасть запустити програму - він зрозуміє, що
toFixed()існує лише у числа, а не у рядка.
Помилка спіймана до виконання коду - програма безпечніша.
2. У чому суть типобезпеки
Type-safe код гарантує:
- Що значення відповідає своєму типу.
→ якщо
user: User, то в нього єname,emailтощо. - Що операції над значенням допустимі для цього типу.
→ не можна викликати
.map()у числа. - Що результати функцій передбачувані.
→ якщо функція повертає
Promise<string>, вона не повернеnumber.
3. Приклад type safety в дії
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 стає менш типобезпечним, якщо використовувати "дірки" в типах:
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:
- ловить помилки до запуску програми,
- робить код надійним, читабельним і передбачуваним,
- і захищає проект від безлічі дрібних (і дорогих) багів.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.