TypeScript · Senior · Запитання 41 з 75
Чи зберігається звуження змінної let усередині колбека?
function f(x: string | number) {
if (typeof x === 'string') {
setTimeout(() => x.toUpperCase());
}
}- ✓Правильна відповідь: Так, з TS 5.4, якщо далі змінна не змінюється
- 2Ні, ніколи: у замиканнях звуження завжди скидається
- 3Так, але лише для
const-змінних у будь-якій версії
Пояснення
Раніше в колбеку TS вважав, що x може бути змінений, і скидав звуження до string | number. З 5.4 компілятор розуміє, що після останнього присвоєння значення стабільне, і зберігає звуження. Для const воно працювало й раніше.