EMZETT.
Login

TypeError (Python und JavaScript)

Kurz: Ein Wert hat nicht den Typ, den die Operation verlangt, etwa Text plus Zahl oder der Aufruf von etwas, das keine Funktion ist.

Genauer: Ein TypeError entsteht, wenn eine Operation oder Funktion einen Wert eines falschen Typs bekommt. Die Meldung sagt meist, welcher Typ erwartet wurde und was tatsächlich vorlag.

Im Detail

Typische Meldungen

Python

  • TypeError: can only concatenate str (not "int") to str: Text und Zahl mit + verbunden.
  • TypeError: 'NoneType' object is not subscriptable: Auf None wurde x[0] angewendet.
  • TypeError: 'int' object is not callable: Eine Variable hat den Namen einer Funktion überschrieben.
  • TypeError: f() takes 1 positional argument but 2 were given.

JavaScript

  • TypeError: x is not a function: Aufruf von etwas, das keine Funktion ist.
  • TypeError: Cannot read properties of undefined (reading 'name'): Zugriff auf undefined.
  • TypeError: Assignment to constant variable: Neuzuweisung einer const-Variable.

Ursachen

  • Fehlende Daten (None/undefined/null), weil eine Suche nichts fand oder eine Antwort nicht da ist.
  • Falscher Datentyp durch Eingaben (Strings statt Zahlen, etwa bei input() oder Formularen).
  • Falsche Argumentanzahl oder Reihenfolge.
  • Variablennamen verdeckt Funktionen (list = [1,2], später list(x)).

Lösungswege

  1. Typ prüfen: print(type(x)) bzw. console.log(typeof x).
  2. Konvertieren: int(text), str(zahl), f-Strings (f"{a} und {b}"), Template-Literale in JS.
  3. Auf None/undefined prüfen bevor zugegriffen wird (if x is not None, x?.name in JS).
  4. Die Zeilennummer der Fehlermeldung ansehen und den Wert davor ausgeben.
  5. Funktionsnamen nicht für Variablen verwenden. In TypeScript fängt der Compiler viele dieser Fehler früh ab.

Siehe auch: Cannot read properties of undefined, ModuleNotFoundError, NullPointerException