Dieser Import befindet sich in Zeile 2 im Quellcode des Changesets-CLI-Pakets
import { ExitError, InternalError } from "@changesets/errors";
Sie lernen die folgenden Konzepte kennen:
1. ExtendableError-Paket
2. ExitError
3. Interner Fehler
Sie werden feststellen, dass ExitError ExtendableError erweitert.
Ich ging davon aus, dass ExtendableError wahrscheinlich eine andere Klasse ist, die in derselben Datei definiert ist, das war jedoch nicht der Fall.
Es wird aus dem erweiterbaren Fehler importiert. Was ist das?
Eine einfache abstrakte erweiterbare Fehlerklasse, die Error erweitert und den Fehlernamen, die Meldung und die Stapeleigenschaft verarbeitet.
npm install extendable-error - save
Dieses Anwendungsbeispiel aus den Dokumenten.
import ExtendableError from 'extendable-error'; class SomeError extends ExtendableError { constructor( message: string, public code: number ) { super(message); } } let someError = new SomeError('Some error', 0x0001);
Zweck von ExtendableError ist die Erstellung benutzerdefinierter Fehlerklassen in JavaScript
mit konsistentem Verhalten zur Fehlerbehandlung. ExtendableError behält den Fehlerstapel und den Namen bei.
Ich habe ChatGPT gebeten, die Unterschiede zwischen der Erweiterung von ExtendableError und der Erweiterung von Error direkt aufzulisten. Nachfolgend habe ich eine Auswahl aus der ChatGPT-Antwort getroffen:
Direkte Fehlervererbung: In einigen älteren JavaScript-Umgebungen (z. B. älteren Versionen von Node.js oder einigen Nicht-Browser-Umgebungen) wird die Namenseigenschaft möglicherweise nicht immer korrekt auf den Namen festgelegt, wenn Sie Error direkt erweitern der Fehlerklasse (z. B. ValidationError).
ExtendableError: Es legt explizit this.name = this.constructor.name; fest, wodurch sichergestellt wird, dass die Namenseigenschaft in allen Umgebungen korrekt festgelegt wird, auch wenn sich die Umgebung nicht korrekt verhält
mit Fehlervererbung.
2. Stack-Trace-Zuverlässigkeit:
Direkte Fehlervererbung: In einigen Umgebungen, insbesondere Node.js, stellt die direkte Verwendung von Error.captureStackTrace in Ihrer benutzerdefinierten Fehlerklasse sicher, dass der Stack-Trace auf die benutzerdefinierte Fehlerklasse verweist. Wenn Sie
Verwenden Sie dies nicht, da sich der Stack-Trace möglicherweise nicht wie erwartet verhält und möglicherweise die falsche Position im Aufrufstack anzeigt.
ExtendableError: Durch die Verwendung von Error.captureStackTrace stellt ExtendableError sicher, dass der Stack-Trace korrekt generiert wird und auf die Stelle zeigt, an der der Fehler ausgelöst wurde. Dies ist in Umgebungen von entscheidender Bedeutung
wie Node.js, wo das Debuggen stärker auf Stack-Traces angewiesen ist.
Der folgende Code stammt aus dem Changesets-Fehlerpaket
import { ExitError, InternalError } from "@changesets/errors";
Der folgende Code stammt aus dem Changets-Fehlerpaket
npm install extendable-error - save
Bei Thinkthroo studieren wir große Open-Source-Projekte und stellen Architekturführer zur Verfügung. Wir haben mit Rückenwind wiederverwendbare Komponenten entwickelt, die Sie in Ihrem Projekt nutzen können. Wir bieten Next.js-, React- und Node-Entwicklungsdienste an.
Buchen Sie einen Termin mit uns, um Ihr Projekt zu besprechen.
https://github.com/changesets/changesets/blob/main/packages/cli/src/index.ts#L9
https://github.com/changesets/changesets/blob/main/packages/errors/src/index.ts#L13
https://www.npmjs.com/package/extendable-error
Das obige ist der detaillierte Inhalt vonExtendableError-Verwendung im Changeset-Fehlerpaket. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!