News Grower

Независимое покрытие AI, стартапов и технологий.

TypeScript в Next.js как система контрактов, а не типизация ради типизации

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

TypeScript в Next.js как система контрактов, а не типизация ради типизации

Когда разработчик начинает писать на Next.js с TypeScript, первая реакция часто довольно холодная. Вместо того чтобы двигаться быстрее, он начинает чаще видеть ошибки. Где-то не совпал shape объекта, где-то строка не подходит в более узкий тип, где-то TypeScript напоминает, что значение может быть undefined. На этом месте легко сделать неправильный вывод. Кажется, что TS просто добавляет трение и требует больше служебного кода.Обычно проблема не в TypeScript, а в способе мышления. Если использовать его как набор аннотаций поверх уже написанного кода, пользы действительно немного. Но если смотреть на типы как на систему контрактов между слоями приложения, картина меняется. Особенно в Next.js App Router, где у нас постоянно есть границы server и client, внешний ввод из URL, формы, мутации и разные состояния интерфейса.В этот момент TypeScript перестаёт быть типизацией ради типизации. Он начинает отвечать на более важный вопрос: какие состояния в проекте вообще допустимы, а какие не должны пройти дальше границы. По такой модели я выстроил один из своих проектов Workbench. Не начинать с мысли давайте везде поставим типы, а начинать с мысли где у нас проходит граница, что в неё входит и что из неё может выйти. После этого многие решения в коде становятся почти очевидными.

Связанные теги

Компании и люди

Линия сюжета

Продолжить следить за темой

Переходите к связанным материалам, страницам сущностей и активным линиям сюжета.

Почему rollback на ext4 — боль, и как я решил это через rsync

Почему rollback на ext4 — боль, и как я решил это через rsync

Я не собирался делать этот проект.Просто однажды сломал систему — и понял, что rollback на ext4 не такая простая вещь, как кажется.В итоге собрал своё решение на rsync: быстрый ...

Нарратив, ачивки и кабинет геймификации: как мы принимаем продуктовые решения на основе голоса клиента

Нарратив, ачивки и кабинет геймификации: как мы принимаем продуктовые решения на основе голоса клиента

Привет! Меня зовут Потешина Елена, я старший UX‑исследователь геймификации в «БКС Мир инвестиций». С января лидирую исследования в 3 продуктовых командах, основная — Геймификаци...

ruGPT3XL идёт в качалку / поднимаем контекст до 8k

ruGPT3XL идёт в качалку / поднимаем контекст до 8k

Это продолжение предыдущей публикации про реставрацию ruGPT3XL. Для тех кто не читал, кратенько, я конвертировал древний Megatron-LM чекпоинт в HuggingFace-формат, залил веса на...

Книга: «Интервью по машинному обучению. 151 вопрос от FAANG»

Книга: «Интервью по машинному обучению. 151 вопрос от FAANG»

Привет, Хаброжители! Хотите построить карьеру в области ML? Воспользуйтесь опытом и советами Пенга Шао, чтобы научиться тому, как успешно пройти собеседование по машинному обуче...

Kawai-Focus 2.5: сборка и упаковка Tauri-приложения (Windows + Arch Linux, AUR)

Kawai-Focus 2.5: сборка и упаковка Tauri-приложения (Windows + Arch Linux, AUR)

Сегодня я займусь совершенно неизведанной и, как мне кажется, мало изученной многими линуксоидами темой — сборкой Tauri-приложения под Windows. Почему мало изученной? Потому что...

Рекламный слот

Встроенный блок в статье

Зарезервированный партнерский слот для релевантных инструментов, сервисов и аккуратных редакционных интеграций.

Партнерский слот

Похожие статьи

Еще материалы, которые пересекаются по тегам, источнику или категории.

Почему rollback на ext4 — боль, и как я решил это через rsync

Почему rollback на ext4 — боль, и как я решил это через rsync

Я не собирался делать этот проект.Просто однажды сломал систему — и понял, что rollback на ext4 не такая простая вещь, как кажется.В итоге собрал своё решение на rsync: быстрый ...

Нарратив, ачивки и кабинет геймификации: как мы принимаем продуктовые решения на основе голоса клиента

Нарратив, ачивки и кабинет геймификации: как мы принимаем продуктовые решения на основе голоса клиента

Привет! Меня зовут Потешина Елена, я старший UX‑исследователь геймификации в «БКС Мир инвестиций». С января лидирую исследования в 3 продуктовых командах, основная — Геймификаци...

ruGPT3XL идёт в качалку / поднимаем контекст до 8k

ruGPT3XL идёт в качалку / поднимаем контекст до 8k

Это продолжение предыдущей публикации про реставрацию ruGPT3XL. Для тех кто не читал, кратенько, я конвертировал древний Megatron-LM чекпоинт в HuggingFace-формат, залил веса на...

Книга: «Интервью по машинному обучению. 151 вопрос от FAANG»

Книга: «Интервью по машинному обучению. 151 вопрос от FAANG»

Привет, Хаброжители! Хотите построить карьеру в области ML? Воспользуйтесь опытом и советами Пенга Шао, чтобы научиться тому, как успешно пройти собеседование по машинному обуче...

Еще материалы от Habr

Свежие публикации и продолжение темы от той же редакции.

Открыть страницу источника
Почему rollback на ext4 — боль, и как я решил это через rsync

Почему rollback на ext4 — боль, и как я решил это через rsync

Я не собирался делать этот проект.Просто однажды сломал систему — и понял, что rollback на ext4 не такая простая вещь, как кажется.В итоге собрал своё решение на rsync: быстрый ...

Нарратив, ачивки и кабинет геймификации: как мы принимаем продуктовые решения на основе голоса клиента

Нарратив, ачивки и кабинет геймификации: как мы принимаем продуктовые решения на основе голоса клиента

Привет! Меня зовут Потешина Елена, я старший UX‑исследователь геймификации в «БКС Мир инвестиций». С января лидирую исследования в 3 продуктовых командах, основная — Геймификаци...

ruGPT3XL идёт в качалку / поднимаем контекст до 8k

ruGPT3XL идёт в качалку / поднимаем контекст до 8k

Это продолжение предыдущей публикации про реставрацию ruGPT3XL. Для тех кто не читал, кратенько, я конвертировал древний Megatron-LM чекпоинт в HuggingFace-формат, залил веса на...

Книга: «Интервью по машинному обучению. 151 вопрос от FAANG»

Книга: «Интервью по машинному обучению. 151 вопрос от FAANG»

Привет, Хаброжители! Хотите построить карьеру в области ML? Воспользуйтесь опытом и советами Пенга Шао, чтобы научиться тому, как успешно пройти собеседование по машинному обуче...