Der 'never'
Typ in TypeScript ist ein besonderer und eher wenig bekannter Teil der Sprache, der jedoch in speziellen Fällen sehr nützlich sein kann. Der Zweck des 'never'
Typs ist die Darstellung von Werten, die nie auftreten. Anders gesagt, bedeutet dies, dass eine Funktion mit dem Rückgabetyp 'never'
niemals erfolgreich endet und immer einen Fehler auslöst oder in einer Endlosschleife endet.
Hier ist ein einfaches Beispiel für eine Funktion, die den 'never'
Typ verwendet:
function throwError(message: string): never {
throw new Error(message);
}
In diesem Fall signalisiert der 'never'
Typ, dass diese Funktion immer einen Fehler wirft und nie zum normalen Codefluss zurückkehrt. Es wird klar, dass nach dem Aufruf dieser Funktion kein Code mehr ausgeführt wird.
Ein weiteres Beispiel wäre eine Funktion, die in einer endlosen Schleife endet:
function infiniteLoop(): never {
while (true) {
}
}
Auch hier zeigt der 'never'
Typ an, dass die Funktion niemals beendet wird und keine Werte zurückgibt.
Obwohl der 'never'
Typ in TypeScript nicht so häufig verwendet wird, sollte man seine Existenz und seinen Zweck nicht vernachlässigen. Er kann ein mächtiges Werkzeug sein, um die Absicht des Codes klar zu kommunizieren und sicherzustellen, dass unerwünschte Zustände als Fehler erkannt werden.
Zum Beispiel könnte er in einer 'switch'
Anweisung verwendet werden, um sicherzustellen, dass alle Fälle behandelt werden. Wenn ein neuer Fall hinzugefügt wird, ohne dass er in der 'switch'
Anweisung behandelt wird, würde TypeScript einen Fehler werfen.
type Fruit = 'apple' | 'orange';
function getFruitColor(fruit: Fruit): string {
switch (fruit) {
case 'apple':
return 'red';
case 'orange':
return 'orange';
default:
const exhaustiveCheck: never = fruit;
return exhaustiveCheck;
}
}
In diesem Beispiel würde TypeScript einen Fehler ausgeben, wenn ein zusätzlicher Obsttyp hinzugefügt würde, ohne dass er in der Funktion 'getFruitColor'
behandelt wird.
Insgesamt kann der 'never'
Typ dazu beitragen, sichereren und klareren Code zu schreiben, indem er signalisiert, dass bestimmte Werte oder Zustände nicht auftreten sollten.