Для начала, стоит определить, что вообще из себя представляют статическая и динамическая типизация.
Статическая типизация характеризуется тем, что объект/переменная имеет неизменный тип: переменная - в принципе - имеет ровно один тип, а там, где он не подходит - осуществляется приведение типа или создание другой переменной.
Динамическая типизация - наоборот - подразумевает, что переменная может ссылаться на объекты совершенно различных - никак между собой не связанных - типов.
Из этого следует, что на динамически типизированных языках легче и быстрее писать программы, но сложнее и дольше их отлаживать, выявлять и исправлять ошибки. А ещё это может ограничивать возможности для оптимизации и проверок корректности.
Кроме того, в современном мире, существует автовыведение типов и обобщённое программирование, что позволяет, во многом, нивелировать известный недостаток статически типизированных языков - занудный педантизм обработчика языка: автовыведение, позволяет избежать ручного - везде и всюду - написания типа, а обобщённое программирование - писать алгоритмы, работающие с переменными разных типов. Поэтому, статическая типизация - в современных реалиях, часто - может быть предпочтительней.