Next.js, type is not assignable и ремонт контракта
В Next.js с TypeScript ошибка type is not assignable нередко указывает на более полезную вещь, чем кажется по формулировке. Проблема часто не в несовпадении типов как таковом, а в том, что проект пытается передать в доменную функцию ещё не нормализованное значение.
Типичный случай это сырой ввод из params, searchParams, form data или store. Снаружи это ещё просто string или unknown, а внутри функция ожидает уже валидный Id, payload или другую собранную сущность. Если заглушить такую ошибку через as, код станет тише, но архитектурная проблема никуда не исчезнет.
Рабочий подход здесь другой. Не маскировать несоответствие, а чинить сам контракт. Сначала проверка, parse или guard на границе, потом переход в доменную логику. В результате TypeScript перестаёт восприниматься как формальная строгость и начинает работать как инструмент, который удерживает разделение между внешним вводом и внутренней моделью.
Статья на Хабр
Проект: Workbench
Stepik: Next.js II: TypeScript 2026