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)).
Рішення
- Перевірте тип:
print(type(x))абоconsole.log(typeof x). - Перетворіть:
int(text),str(number), f-рядки (f"{a} and {b}"), шаблонні літерали в JS. - Перевіряйте на None/undefined перед зверненням (
if x is not None,x?.nameу JS). - Подивіться номер рядка в повідомленні про помилку й виведіть значення перед ним.
- Не використовуйте імена функцій для змінних. У TypeScript компілятор рано ловить багато таких помилок.
Див. також: Cannot read properties of undefined, ModuleNotFoundError, NullPointerException