Напиши тип Middle Объединения и сужение обновлено
noUncheckedIndexedAccess и доступ по индексу
Вопрос
В tsconfig включён noUncheckedIndexedAccess. Какой тип у x? Впишите тип.
// tsconfig: "strict": true, "noUncheckedIndexedAccess": true
declare function loadNames(): string[];
const arr: string[] = loadNames();
const x = arr[0]; // x: /* ? */
Попробуйте сами
Напишите тип, как написали бы в коде.
Показать ответ и разбор
Коротко
Правильный тип: string | undefined. Без флага arr[0] имеет тип string, хотя массив может быть пустым, и это частая причина Cannot read properties of undefined в проде. noUncheckedIndexedAccess добавляет undefined к доступу по индексу массивов и индексных сигнатур…
Правильный тип
string | undefined
Разбор
Без флага arr[0] имеет тип string, хотя массив может быть пустым, и это частая причина Cannot read properties of undefined в проде. noUncheckedIndexedAccess добавляет | undefined к доступу по индексу массивов и индексных сигнатур (Record<string, T>). Флаг не входит в strict, его включают отдельно. Деструктуризация кортежей фиксированной длины и цикл for...of не страдают.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.