Статическая типизация переменных предполагает определение типа в процессе компиляции. 2 Это значит, что тип каждой переменной задаётся раз и навсегда, и неправильную работу с типами программа «увидит» ещё до того, как запустится. 1
Динамическая типизация — это определение типа при выполнении кода. 1 То есть программа запускается, доходит до места, где объявляют какую-то переменную, и задаёт ей тип ровно в этот момент. 1 В таких языках переменная может менять тип: в этой части кода в ней лежит число, а в другой — строка. 1
Таким образом, основное отличие в том, что при статической типизации тип устанавливается заранее, а при динамической — во время работы программы. 2