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