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: AufNonewurdex[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 aufundefined.TypeError: Assignment to constant variable: Neuzuweisung einerconst-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äterlist(x)).
Lösungswege
- Typ prüfen:
print(type(x))bzw.console.log(typeof x). - Konvertieren:
int(text),str(zahl), f-Strings (f"{a} und {b}"), Template-Literale in JS. - Auf None/undefined prüfen bevor zugegriffen wird (
if x is not None,x?.namein JS). - Die Zeilennummer der Fehlermeldung ansehen und den Wert davor ausgeben.
- 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