Динамічна типізація
Що таке типізація
Типізація - це спосіб, яким мова програмування керує типами даних (числа, рядки, об'єкти тощо).
Статична vs Динамічна типізація
| Характеристика | Статична типізація | Динамічна типізація |
|---|---|---|
| Коли визначається тип | На етапі компіляції | На етапі виконання |
| Чи можна змінити тип змінної | Ні | Так |
| Приклад мов | TypeScript, Java, C#, C++ | JavaScript, Python, PHP |
| Перевірка типів | До запуску програми | Під час виконання |
| Тип помилки при невідповідності | Помилка компіляції | Помилка під час виконання |
Приклад: JavaScript (динамічно типізований)
javascript
let value = 42; // число
console.log(typeof value); // "number"
value = "Привіт"; // тепер рядок!
console.log(typeof value); // "string"
value = true; // тепер булеве значення
console.log(typeof value); // "boolean"Тут тип змінної може змінюватися під час виконання, і це нормально для JS.
Приклад для порівняння: TypeScript (статично типізований)
javascript
let value: number = 42;
value = "Привіт"; // Помилка: тип "string" не присвоюється типу "number"У TypeScript (або Java) тип вказується один раз і не може змінюватися.
Наслідки динамічної типізації
Плюси:
- Швидке написання коду, менше «шумних» анотацій.
- Гнучкість: змінні можна повторно використовувати з різними типами.
Мінуси:
- Помилки проявляються тільки під час виконання.
- Складніше налагоджувати великі проекти.
- Можливі несподівані перетворення типів:
javascript
console.log('5' - 2); // 3 (рядок → число)
console.log('5' + 2); // "52" (число → рядок)Підсумок
JavaScript - динамічно і слабко типізована мова, тому що:
- тип змінної визначається під час виконання,
- і може змінюватися в будь-який момент,
- при цьому мова автоматично перетворює типи, якщо це можливо.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.