Signatur
Beschreibung
Das TypeError-Objekt repräsentiert einen Fehler, wenn eine Operation nicht ausgeführt werden konnte, typischerweise (aber nicht ausschließlich) wenn ein Wert nicht vom erwarteten Typ ist.
Ein TypeError kann geworfen werden, wenn:
- ein Operand oder ein an eine Funktion übergebenes Argument nicht mit dem von diesem Operator oder dieser Funktion erwarteten Typ kompatibel ist; oder
- versucht wird, einen Wert zu modifizieren, der nicht geändert werden kann; oder
- versucht wird, einen Wert auf eine unangemessene Weise zu verwenden.
TypeError ist ein serialisierbares Objekt, sodass es mit structuredClone() geklont oder zwischen Workers mit postMessage() kopiert werden kann.
TypeError ist eine Subklasse von Error.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $message | string | "" | Menschenlesbare Beschreibung des Fehlers. Wird unter error.message gespeichert. |
| $options | { cause?: any } | Optionsobjekt (seit ES2022). Die Eigenschaft cause ermöglicht es, den ursprünglichen Fehler zu referenzieren und so eine Fehler-Kette zu bilden. |
Rückgabewert
TypeError, die von Error erbt und die Eigenschaften name, message, stack und optional cause trägt.Beispiele
Einen TypeError abfangen
try {
null.f();
} catch (e) {
console.log(e instanceof TypeError); // true
console.log(e.message); // "null has no properties"
console.log(e.name); // "TypeError"
console.log(e.stack); // Stack of the error
}
Einen TypeError erzeugen
try {
throw new TypeError("Hello");
} catch (e) {
console.log(e instanceof TypeError); // true
console.log(e.message); // "Hello"
console.log(e.name); // "TypeError"
console.log(e.stack); // Stack of the error
}
// Wichtig · Fallstricke
Häufige Ursachen für automatisch geworfene TypeErrors:
- Eigenschaftszugriff auf
nulloderundefined(Cannot read properties of …) - Aufruf einer Nicht-Funktion (
xyz is not a function) - Übergabe eines falschen Typs an eingebaute Funktionen (z. B.
Array.isArray(123)wirft keinen TypeError, aberObject.create(123)schon) - Schreibzugriff auf schreibgeschützte Eigenschaften im strict mode
- Verwendung von
newauf einem Nicht-Konstruktor
Browser-Kompatibilität: TypeError ist in allen modernen Browsern und Node.js verfügbar. Die cause-Option im Konstruktor ist seit ES2022 standardisiert und wird ab Chrome 93, Firefox 91, Safari 15 und Node.js 16.9 unterstützt.
Tipp: Bei TypeScript-Projekten ersetzt statische Typprüfung viele Laufzeit-TypeErrors. Dennoch ist manuelles Werfen von TypeError an API-Grenzen (z. B. öffentliche Bibliotheksfunktionen) sinnvoll, um Nutzern klare Fehlermeldungen zu geben.