TypeError (Python ve JavaScript)
Kısaca: Bir değer, işlemin gerektirdiği türde değil; örneğin metin artı sayı ya da işlev olmayan bir şeyi çağırmak.
Biraz daha ayrıntılı: Bir işlem veya işlev yanlış türde bir değer aldığında TypeError oluşur. Mesaj genellikle hangi türün beklendiğini ve gerçekte neyin bulunduğunu söyler.
Ayrıntılı
Tipik mesajlar
Python
TypeError: can only concatenate str (not "int") to str: metin ve sayı+ile birleştirilmiş.TypeError: 'NoneType' object is not subscriptable:x[0]None’a uygulanmış.TypeError: 'int' object is not callable: bir değişken işlev adının üzerine yazmış.TypeError: f() takes 1 positional argument but 2 were given.
JavaScript
TypeError: x is not a function: işlev olmayan bir şey çağrılıyor.TypeError: Cannot read properties of undefined (reading 'name'):undefinedüzerinde erişim.TypeError: Assignment to constant variable: birconstdeğişkenine yeniden atama.
Nedenler
- Bir arama hiçbir şey bulmadığı ya da yanıt olmadığı için eksik veri (
None/undefined/null). - Girdilerden gelen yanlış veri türü (sayı yerine dizgi, örneğin
input()veya formlarla). - Yanlış sayıda veya sırada argümanlar.
- Değişken adları işlevleri gölgeler (
list = [1,2], sonralist(x)).
Çözümler
- Türü kontrol et:
print(type(x))veyaconsole.log(typeof x). - Dönüştür:
int(text),str(number), f-string’ler (f"{a} and {b}"), JS’de şablon değişmezleri. - Erişmeden önce None/undefined kontrolü yap (
if x is not None, JS’dex?.name). - Hata mesajındaki satır numarasına bak ve öncesinde değeri yazdır.
- Değişkenler için işlev adları kullanma. TypeScript’te derleyici bu hataların birçoğunu erken yakalar.
Ayrıca bak: Cannot read properties of undefined, ModuleNotFoundError, NullPointerException