EMZETT.
Войти

TypeError (Python и JavaScript)

Коротко: Значение не имеет типа, который требует операция, например текст плюс число или вызов того, что не является функцией.

Подробнее: TypeError возникает, когда операция или функция получает значение неверного типа. Сообщение обычно говорит, какой тип ожидался и что было на самом деле.

Подробности

Типичные сообщения

Python

  • TypeError: can only concatenate str (not "int") to str: текст и число соединены через +.
  • TypeError: 'NoneType' object is not subscriptable: x[0] применено к None.
  • TypeError: 'int' object is not callable: переменная перезаписала имя функции.
  • TypeError: f() takes 1 positional argument but 2 were given.

JavaScript

  • TypeError: x is not a function: вызывается то, что не является функцией.
  • TypeError: Cannot read properties of undefined (reading 'name'): доступ к undefined.
  • TypeError: Assignment to constant variable: повторное присваивание переменной const.

Причины

  • Отсутствующие данные (None/undefined/null), потому что поиск ничего не нашёл или ответа нет.
  • Неверный тип данных из ввода (строки вместо чисел, например при input() или формах).
  • Неверное число или порядок аргументов.
  • Имена переменных затеняют функции (list = [1,2], позже list(x)).

Решения

  1. Проверьте тип: print(type(x)) или console.log(typeof x).
  2. Преобразуйте: int(text), str(number), f-строки (f"{a} and {b}"), шаблонные литералы в JS.
  3. Проверяйте на None/undefined перед обращением (if x is not None, x?.name в JS).
  4. Посмотрите номер строки в сообщении об ошибке и выведите значение перед ней.
  5. Не используйте имена функций для переменных. В TypeScript компилятор рано ловит многие такие ошибки.

См. также: Cannot read properties of undefined, ModuleNotFoundError, NullPointerException