Der 'never'-Typ
Teil des Abschnitts Einführung in TypeScript der JavaScript-Journey von Coddy. Lektion 70 von 73.
Der Typ never repräsentiert Werte, die niemals auftreten. Das mag zuerst verwirrend klingen, ist aber eigentlich ziemlich logisch, wenn man über bestimmte Szenarien in seinem Code nachdenkt.
Der never-Typ wird am häufigsten für Funktionen verwendet, die niemals normal zurückkehren.
Dies schließt Funktionen ein, die immer einen Fehler auslösen oder Endlosschleifen enthalten:
function throwError(message: string): never {
throw new Error(message);
}
function infiniteLoop(): never {
while (true) {
// Diese Schleife endet nie
}
}Im Gegensatz zu void, was darauf hinweist, dass eine Funktion keinen aussagekräftigen Wert zurückgibt, gibt never an, dass die Funktion ihren Endpunkt überhaupt nie erreicht. Die Ausführung stoppt entweder, weil ein Fehler ausgelöst wird, oder sie wird unendlich fortgesetzt.
Aufgabe
EinfachErstellen Sie eine Funktion namens throwError, die den Rückgabetyp never demonstriert, indem sie immer einen Fehler auslöst und niemals normal zurückkehrt.
Die Funktion sollte:
- Einen Parameter
messagevom Typstringentgegennehmen - Einen neuen
Errormit der bereitgestellten Nachricht auslösen - Einen expliziten Rückgabetyp
neverhaben
Erstellen Sie eine zweite Funktion namens handleOperation, die:
- Zwei Parameter entgegennimmt:
operationvom Typstringundvaluevom Typnumber value * 2zurückgibt, wenn die Operation"double"istvalue / 2zurückgibt, wenn die Operation"half"istthrowErrormit der Nachricht"Invalid operation: [operation]"für jede andere Operation aufruft- Einen expliziten Rückgabetyp
numberhat
Testen Sie Ihre Funktionen mit den folgenden Operationen:
- Rufen Sie
handleOperation("double", 5)auf und geben Sie das Ergebnis aus - Rufen Sie
handleOperation("half", 8)auf und geben Sie das Ergebnis aus - Rufen Sie
handleOperation("triple", 3)auf und geben Sie das Ergebnis aus (dies wird einen Fehler auslösen)
Erstellen Sie zusätzliche Testfälle:
- Rufen Sie
handleOperation("double", 15)auf und geben Sie das Ergebnis aus - Rufen Sie
handleOperation("half", 20)auf und geben Sie das Ergebnis aus
Probier es selbst
// TODO: Schreiben Sie hier Ihren Code
// Erstellen Sie die throwError-Funktion mit dem Rückgabetyp never
// Erstellen Sie die handleOperation-Funktion mit dem Rückgabetyp number
// Testen Sie die Funktionen mit try-catch-Blöcken
try {
console.log(handleOperation("double", 5));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}
try {
console.log(handleOperation("half", 8));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}
try {
console.log(handleOperation("triple", 3));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}
try {
console.log(handleOperation("double", 15));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}
try {
console.log(handleOperation("half", 20));
} catch (error) {
console.log(`Error: ${(error as Error).message}`);
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Einführung in TypeScript
1Erste Schritte mit TS
Was ist TypeScript?Warum TypeScript verwenden?Dein erster TypeScript-CodeKompilierungsprozess & FehlerZusammenfassung: Einführung in TS4Arbeiten mit Funktionen
Typisierung von Parametern & RückgabewertenTypisierung von Arrow-FunktionenDer Rückgabetyp 'void'Optionale Parameter mit '?'Standard-ParameterwerteTypisierung von Rest-ParameternDefinieren von FunktionstypenZusammenfassung: Typisierte Funktionen erstellen2Basis-Typen
Basis-Typen: str, num, booleanDer 'any'-Typ: Der NotausgangDer 'unknown'-TypArbeiten mit 'null' & 'undef'Typinferenz in der PraxisExplizite Typ-AnnotationenZusammenfassung: Übung zu Basis-Typen5Typen: Aliase, Unions & Intersections
Typ-Aliase für primitive DatentypenUnion-Typen ('|')Arbeiten mit Union-TypenLiteral-TypenIntersection-Typen ('&')Kombinieren von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen8Enums
Was ist ein numerisches Enum?Numerische Enums verwendenWas ist ein String-Enum?String-Enums verwendenHeterogene EnumsZusammenfassung: Enums verwenden11Fortgeschrittene Themen
Type AssertionsType Guards: in & instanceofDer 'never'-TypNullable Types ('strictNull')Index-Signaturen für ObjekteRecap: Typen verfeinern3Datenstruktur: Arrays & Tupel
Typisierte Arrays'readonly'-Modifikator für ArraysWas ist ein Tupel?Deklarieren von und Zugriff auf TupelDestrukturierung von TupelnReadonly-TupelMehrdimensionale typisierte ArraysSpread-Operator mit ArraysZusammenfassung: Arrays und TupelÜbe selbstständig: Online-JavaScript-Compiler