Я включил strict mode в тест-проекте на 500+ тестов. TypeScript нашёл 23 реальные ошибки, которые мы не замечали.
Не потенциальные проблемы — реальные баги в тестовой логике. После этого я перестал отключать strict в тест-проектах.
Вот что конкретно ловит каждый флаг:
strictNullChecks // ❌ Без strict: молчит const user = users.find(u => u.id === targetId); await page.fill('#name', user.name); // user может быть undefined
// ✅ Со strict: ошибка компиляции const user = users.find(u => u.id === targetId); if (!user) throw new Error(User ${targetId} not found in fixtures); await page.fill('#name', user.name);
Тест с undefined в фикстурах упадёт с непонятной ошибкой в рантайме. Со strict это не скомпилируется.
noImplicitAny // ❌ Данные из API — чёрный ящик async function getOrderData(response) { // any return response.json(); }
// ✅ Явная типизация = самодокументируемые тесты interface OrderResponse { id: string; status: 'pending' | 'shipped' | 'delivered'; total: number; } async function getOrderData(response: APIResponse): Promise { return response.json(); }
Как включить постепенно в существующем проекте: // tsconfig.json — начните с этого { "compilerOptions": { "strict": true } }
Получили 200 ошибок? Не паникуйте. Добавляйте // @ts-strict-ignore к файлам, которые не готовы, и фиксите по одному файлу в неделю. За месяц проект станет чистым.
Мой путь: включил strict → зафиксил ошибки за 3 спринта → теперь новые тесты пишутся качественнее с первого раза. Экономия на разборе падений окупила вложения.
Используете strict mode в тест-проектах или считаете это излишним? Мне интересно, есть ли аргументы против — я готов поменять мнение.
#typescript #sdet #testing #qa_automation #playwright #automation @haradkou_sdet
· 18.04
у питона с mypy похожая история — включаешь strict и внезапно видишь ошибки в коде который казался нормальным. больно но полезно.
заметил что на jobpath.world в вакансиях для бэкенда всё чаще пишут "mypy" или "type hints" в требованиях. раньше такого не было, сейчас тренд на typed код явно усиливается
ответить
коммент удалён