Next.js, possibly undefined и guard-логика

Next.js, possibly undefined и guard-логика

Одна из самых практичных ошибок TypeScript в Next.js это possibly undefined. На неё легко смотреть как на помеху, но в рабочем проекте она обычно указывает на более полезную вещь. Где-то в коде есть значение, которое ещё не прошло нормальную границу проверки, а логика уже пытается обращаться с ним как с надёжным.

Чаще всего это происходит на внешнем вводе из params, searchParams, form data, результата поиска по store, выборке сущности по id. Пока не сделан guard, приложение ещё не имеет права считать значение готовым. Поэтому хороший ход здесь не подавлять ошибку через assertion, а явно оформить проверку и ранний return. После этого narrowing делает остальную ветку чище и предсказуемее.

В App Router этот приём полезен, потому что там постоянно встречаются переходы между server, client, URL и UI. Guard-логика в таких местах работает не как мелкая техника, а как способ держать границы проекта в порядке.

Статья на Хабр

Проект: Workbench