Описание тега strong-typing

Система типизации, которая устанавливает ограничения на то, какие операции или методы могут вызываться для объекта на основе типа.

См. Статью в Википедии, где подробно обсуждается строгая типизация. См. Также статью о сравнении систем типов.

Антоним: слабая типизация.


Соображения о строгой типизации:

  • приведения / преобразования типов
  • генерирование ошибок (т.е. гарантия отказа) при вызове недопустимых методов / функций
  • безопасность типа

Сравнение сильного / слабого со статическим / динамическим (это не одно и то же!):

  • статический / динамический - это когда происходит проверка типа
  • сильный / слабый - это проверка того, какой тип происходит

Примеры:

Сильный, статичный. Этот код Java вызывает ошибку компиляции, потому чтоString не имеет метода, называемого thisIsNotAMethod():

"mystring".thisIsNotAMethod();

Сильный, динамичный. Этот код python вызывает исключение во время выполнения, потому что нельзя добавлять целые числа и строки:

3 + "34"
# result: TypeError: unsupported operand type(s) for +: 'int' and 'str'