tsconfig нового проекта
Вопрос
Какие настройки tsconfig вы включаете в новом фронтенд-проекте и почему?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
`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 ошибок.