Next.js, общий тип Id и union-состояния

Next.js, общий тип Id и union-состояния

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

На практике полезные места другие. Общий тип Id для сущности, чтобы не протаскивать сырой string дальше нужной точки. Union-результат для операций и форм, чтобы UI работал только с допустимыми состояниями. Narrowing через if, чтобы ветка success и ветка error не смешивались в один рыхлый объект.

Это вроде бы небольшие приёмы, но именно они превращают TypeScript из набора аннотаций в систему контрактов. Важно в App Router, где постоянно есть границы между server и client, внешний ввод из URL и несколько уровней состояния.

Разобрал это подробнее в статье на Хабр

Живой пример: Workbench

Начать дискуссию