TypeScript · Senior · Pytanie 41 z 75

Czy zawężenie zmiennej let jest zachowywane wewnątrz callbacku?

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

Wyjaśnienie

Wcześniej wewnątrz callbacku TS zakładał, że x może zostać ponownie przypisane, i resetował zawężenie do string | number. Od 5.4 kompilator rozumie, że wartość jest stabilna po ostatnim przypisaniu, i zachowuje zawężenie. Dla const działało to już wcześniej.

Do poczytania

Błąd w pytaniu

TypeScript · Senior · pytanie 41

Sprawdź się

Rozwiąż test TypeScript · Senior: pytania i odpowiedzi są tasowane, a na końcu czeka przegląd błędów.

Rozwiąż ten test