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());
}
}- ✓Poprawna odpowiedź: Tak, od TS 5.4, jeśli zmienna nie jest potem ponownie przypisywana
- 2Nie, nigdy: zawężenie w domknięciach jest zawsze resetowane
- 3Tak, ale tylko dla zmiennych
constw każdej wersji
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.