Menu
Coddy logo textTech

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.

challenge icon

Aufgabe

Einfach

Erstellen 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 message vom Typ string entgegennehmen
  • Einen neuen Error mit der bereitgestellten Nachricht auslösen
  • Einen expliziten Rückgabetyp never haben

Erstellen Sie eine zweite Funktion namens handleOperation, die:

  • Zwei Parameter entgegennimmt: operation vom Typ string und value vom Typ number
  • value * 2 zurückgibt, wenn die Operation "double" ist
  • value / 2 zurückgibt, wenn die Operation "half" ist
  • throwError mit der Nachricht "Invalid operation: [operation]" für jede andere Operation aufruft
  • Einen expliziten Rückgabetyp number hat

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}`);
}
quiz iconTeste dich selbst

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

Übe selbstständig: Online-JavaScript-Compiler