typescript - Varför gör throw funktionens slutpunkt oåtkomlig?


I typescript är ett användningsfall för typen never när en funktion har en oåtkomlig slutpunkt. Men jag förstår inte varför throw-satsen gör att funktionen får en oåtkomlig slutpunkt.

function error(message: string): never {
    throw new Error(message);
}

Kan någon vänligen förklara varför?

Svar #1

Din error-funktion slutförs aldrig normalt, eftersom den alltid kastar ett fel istället för att slutföra normalt:

function error(message: string): never {
    throw new Error(message); // <====== Terminates with an error here
                              // <====== Never gets here
}

error("foo");
// Execution never reaches this point

Det betyder att det aldrig har ett returvärde, därför används typen never för att ange det faktumet.