Alexandroppolus
1) TypeScript сейчас не выполняет проверку типов для целочисленных индексов. Проверка по длине работает для tuple-ов, например если у вас есть переменная типа [Item] | [Item, Item], то при проверке на length TypeScript сузит вам тип до [Item] или [Item, Item]
2) То что вы хотите - смена типа переменной в результате смены состояния объекта - в TS нет и врядли будет в ближайшее время. Проверять такое очень сложно на этапе компиляции. Сейчас в TS есть control flow typing в виде сужения типа переменной в ветвях условий при использовании встроенных или пользовательских type guards.
Gary_Ihar, это да, ввод более строгих правил на существующем проекте всегда приводит к новым репортам, зато защищает от возможных ошибок.
Один раз выделить время и поправить, по другому никак.
Где-то стоит действительно проверок добавить - ибо так как раз и выявляются скрытые баги.
Ну а где точно уверены, что проверка не нужна, это можно закрыть через ! (non null assertion) оператор