TypeScript · Senior · Запитання 41 з 75

Чи зберігається звуження змінної let усередині колбека?

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

Пояснення

Раніше в колбеку TS вважав, що x може бути змінений, і скидав звуження до string | number. З 5.4 компілятор розуміє, що після останнього присвоєння значення стабільне, і зберігає звуження. Для const воно працювало й раніше.

Де почитати

Помилка в запитанні

TypeScript · Senior · запитання 41

Перевірте себе

Пройдіть тест TypeScript · Senior: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест