TGViewer
amorgunov amorgunov @amorgunov · 1.92K subscribers
Post #147 2.52K
stringbool в zod

Пару дней назад закрыли старый ишьюс от 2022 года в библиотеке zod, в котором предложили добавить более строгую проверку (через дополнительный аргумент) на приведение строки к булаен типу (z.coerce.boolean()), чтобы при передаче "false" в виде строкового значения возвращался false.

Эта история расширилась тем, что помимо "false", так же хотелось бы обрабатывать "0", "off" и подобные falsy-значения. Это можно было решить через кастомную схему и метод transform (рассказывал в видео про валидацию переменных окружения), но в четвертой версии zod появился тип stringbool, который решает эту проблему. Что он делает? Преобразует "булевы" значения в строковом виде (список можно переопределять) в простые булевы значения:

const strbool = z.stringbool();

strbool.parse("true") // true
strbool.parse("1") //true
strbool.parse("on") // true

strbool.parse("false") // false
strbool.parse("0") // false
strbool.parse("off") // false


Прикольно видеть, как инструменты развиваются (даже на примере этой фичи, которая пришла от пользователей), да и как за небольшое время zod стал чуть-ли не классическим инструментом в мире фронтенда. Знаю и про arktype, и про valibot с joi, но по экосистеме и популярности zod далеко впереди всех (отчет в npm trends).

Кстати эта фича вошла в 4-ую версию библиотеки, которая вышла совсем недавно. Из самого интересно:

- работа с новой версией через сабпрефикс (zod/v4) вместе с zod@3.25.0. Это сделано, чтобы не сломать экосистему, так как при публикации сразу 4-ой мажорной версии в npm, всем зависимым библиотекам пришлось бы оперативно поддержать новое API (вот тут в ишью можно почитать подробнее https://github.com/colinhacks/zod/issues/4371)

- релиз Zod Mini. Одна из больших проблем zod заключалась в том, что API библиотеки нормально не tree-shake-илась, из-за чего, например, мы не стали подключать ее на клиенте, или из-за чего появился valibot (аналог zod с хорошим tree-shaking-ом). В Zod Mini немного изменили API (перевели схемы на функциональный стиль через композицию функций) и поддержали tree-shaking. Поэтому если вы не использовали zod по той же причиной, теперь можно пробовать :)
  • 👍 21
  • 😁 1
More from @amorgunov
  1. Sep 29, 2026Вообще, если разгонять тему собеседований, то текущие форматы на мой взгляд не подходят по…
  2. Sep 24, 2026В июне выступал на CodeFest и рассказывал про то, как готовиться к архитектурной секции (S…
  3. May 25, 2026На прошлой неделе ездил на HolyJS. Про конференции в целом напишу отдельно - есть нескольк…
  4. May 18, 2026Друзья, всем привет! Давно ничего не писал, в очередной раз попробую оживить канал. Обещат…
  5. Jun 23, 2025Interface merging в TypeScript В TypeScript есть возможность автоматически мержить интерфе…
  6. Jun 6, 2025Мнение – SolidJS За последний год удалось несколько раз пописать код в рамках пет-проектов…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →