TypeScript · Middle · Frage 2 von 75

Wie garantiert man, dass ein switch jedes Mitglied einer Union behandelt hat?

function area(s: Shape) {
  switch (s.kind) {
    case 'circle': return Math.PI * s.radius ** 2;
    case 'square': return s.size ** 2;
    default: { const _exhaustive: never = s; return _exhaustive; }
  }
}
Antwort zeigen

Richtige Antwort: Den Wert in default einer Variablen vom Typ never zuweisen

Erklärung

Fügt man Shape eine neue Form hinzu und vergisst ein case, bleibt in default ein nicht leerer Typ, und die Zuweisung an never erzeugt einen Compile-Fehler. Auch das Flag noImplicitReturns und die ESLint-Regel switch-exhaustiveness-check helfen.

Zum Weiterlesen

Fehler in der Frage

TypeScript · Middle · Frage 2

Teste dich selbst

Mach den Test TypeScript · Middle: Fragen und Antworten werden gemischt, und am Ende wartet eine Übersicht der Fehler.

Diesen Test machen