EMZETT.
Giriş yap

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: bir const değ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], sonra list(x)).

Çözümler

  1. Türü kontrol et: print(type(x)) veya console.log(typeof x).
  2. Dönüştür: int(text), str(number), f-string’ler (f"{a} and {b}"), JS’de şablon değişmezleri.
  3. Erişmeden önce None/undefined kontrolü yap (if x is not None, JS’de x?.name).
  4. Hata mesajındaki satır numarasına bak ve öncesinde değeri yazdır.
  5. 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