Ответ вслух Middle tsconfig и декларации обновлено

tsconfig нового проекта

Вопрос

Какие настройки tsconfig вы включаете в новом фронтенд-проекте и почему?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Основа strict: true: без strictNullChecks половина пользы TypeScript теряется. Сверху добавляю noUncheckedIndexedAccess, он ловит доступ к несуществующему элементу массива или словаря, и noImplicitOverride для классов.

Что должно прозвучать в ответе

  • `strict: true` как база, включая `strictNullChecks` и `noImplicitAny`

  • Дополнительно `noUncheckedIndexedAccess`, `noImplicitOverride`, по ситуации `exactOptionalPropertyTypes`

  • `moduleResolution: bundler`, `module: esnext` (или `preserve`) для кода под Vite или Next

  • `noEmit` и `isolatedModules` (или `verbatimModuleSyntax`): сборкой занимается esbuild или SWC, `tsc` только проверяет

  • `paths` для алиасов, продублированные в сборщике

  • `skipLibCheck` ради скорости, с пониманием, что он скрывает

Что могут спросить следом

  • Почему не включить сразу все флаги?
  • Как мигрировать большой проект на strict?
  • Чем bundler отличается от nodenext?

Разбор

Основа strict: true: без strictNullChecks половина пользы TypeScript теряется. Сверху добавляю noUncheckedIndexedAccess, он ловит доступ к несуществующему элементу массива или словаря, и noImplicitOverride для классов. Для кода, который собирает Vite или Next, ставлю moduleResolution: bundler и module: esnext: импорты без расширений, поддержка exports в package.json. Сборку делает esbuild или SWC, поэтому noEmit: true, а isolatedModules или verbatimModuleSyntax гарантируют, что каждый файл можно транспилировать отдельно. lib включает dom и актуальный ES, target под поддерживаемые браузеры. Алиасы в paths дублирую в сборщике. skipLibCheck: true почти всегда, чтобы не воевать с типами зависимостей. Большой старый проект перевожу на strict постепенно: по одному флагу или по папкам.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме