TypeScript · Senior · Frage 41 von 75

Bleibt die Eingrenzung einer let-Variablen in einem Callback erhalten?

function f(x: string | number) {
  if (typeof x === 'string') {
    setTimeout(() => x.toUpperCase());
  }
}
Antwort zeigen

Richtige Antwort: Ja, seit TS 5.4, wenn die Variable danach nicht neu zugewiesen wird

Erklärung

Früher nahm TS in einem Callback an, x könnte neu zugewiesen werden, und setzte die Eingrenzung auf string | number zurück. Seit 5.4 versteht der Compiler, dass der Wert nach der letzten Zuweisung stabil ist, und behält die Eingrenzung. Für const funktionierte es schon vorher.

Zum Weiterlesen

Fehler in der Frage

TypeScript · Senior · Frage 41

Teste dich selbst

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

Diesen Test machen