🧐Даже опытные разработчики, зачастую, употребляют понятия "строгая" и "сильная" типизация как синонимы. Однако между ними все же есть разница. 🔹Сильная типизация — про запрет неявных преобразований типов. Если попытаться сложить число и строку, программа выдаст ошибку.
Пример: Python. Если написать 1 + "2", будет ошибка. 🔹Слабая типизация — язык пытается быть «удобным» и сам негласно превращает один тип в другой (приведение типов).
Пример: JavaScript. Если написать 1 + "2", он просто сделает из числа строку и выдаст "12". 🔹Строгая типизация (часто синоним статической типизации):
— типы проверяются жёстко и последовательно
— ошибки выявляются рано (часто на этапе компиляции)
— нужно заранее сказать, что переменная x — это целое число.
Примеры: Java, C++, Rust, TypeScript. 🔹Нестрогая типизация (часто синоним динамической типизации):
— типы проверяются только во время выполнения
— ошибок на этапе написания кода почти не ловит
— переменная может сначала хранить число, а через секунду