Start · Sprachen · JavaScript · Referenz · TypeError

TypeError

Klasse

Das <code>TypeError</code>-Objekt repräsentiert einen Fehler, wenn eine Operation nicht ausgeführt werden konnte, typischerweise weil ein Wert nicht vom erwarteten Typ ist.

seit JavaScript ES5 (ES2015 als formale Klasse) Kategorie: core

Signatur

new TypeError(message, options)

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

Typ
TypeError
Beschreibung
Eine neue Instanz von 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 null oder undefined (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, aber Object.create(123) schon)
  • Schreibzugriff auf schreibgeschützte Eigenschaften im strict mode
  • Verwendung von new auf 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.

Siehe auch