Строгий TypeScript часто воспринимают как набор формальностей. На практике он ловит ошибки, которые иначе всплывают в браузере.
noUncheckedIndexedAccess
Опция заставляет помнить, что элемента по индексу может не быть:
const posts: string[] = [];
const first = posts[0]; // string | undefined
Без неё TypeScript считает first строкой и разрешает first.toUpperCase(). С ней приходится обработать пустой массив явно.
Где это важно
- ответы API с массивами;
Object.entries()и словари;- разбор URL и query-параметров.
verbatimModuleSyntax
Импорты типов должны быть явными:
import type { CollectionEntry } from 'astro:content';
Так сборщик не тащит лишний код в бандл и не путает тип с runtime-значением.
Типы на границах
Внутри функции TypeScript выводит типы сам. На границах — данных, API, props компонентов — лучше писать явно. Это документация, которая проверяется компилятором.
Хороший тип не описывает всё, что может быть. Он запрещает то, чего быть не может.
Итог
Strict-режим — не бюрократия, а дешёвая страховка. Ошибки, которые он ловит, обычно дороже в отладке, чем в исправлении.