Перейти к содержанию

Zod схема в тип TypeScript

Преобразуйте определение схемы Zod в соответствующий интерфейс TypeScript или тип.

Входные данные
Выходные данные

Zod схема в тип TypeScript

Вставьте схему Zod — определение `z.object({...})`, опционально присвоенное переменной `const` — и этот инструмент выводит интерфейс TypeScript или alias типа, который выдал бы `z.infer`. Это полезно, когда схема является источником истины и вам нужен соответствующий статический тип без выполнения шага сборки или CLI codegen: для быстрой проверки корректности при написании кода валидации, для документирования формы API из схемы Zod, или для переноса схемы в кодовую базу, которой нужны только типы.

Опции вывода управляют формой генерируемого кода. Выберите между `interface` и `type` alias (необъектная схема, такая как простой union или строка, всегда становится type alias, так как интерфейсы TypeScript могут описывать только формы объектов), и экспортируется ли объявление. Необязательные поля могут отображаться либо как знак вопроса (`field?: string`), либо как явный union `string | undefined`. Отдельный переключатель сохраняет членов `z.enum` как литеральный union вместо их сворачивания в `string`, а другой превращает вызовы `.describe("...")` в блок комментария выше каждого поля.

Вложенные объекты, массивы, кортежи, unions, пересечения, записи, карты и наборы все преобразуются в эквиваленты TypeScript, а обычные цепочки вызовов, которые только добавляют валидацию во время выполнения — `.min()`, `.email()`, `.refine()`, `.default()` и прочие — распознаются и пропускаются, а не нарушают преобразование. Рекурсивные схемы, построенные с `z.lazy(() => Schema)`, разрешаются обратно в самоссылающийся тип, когда соответствующий `const` является частью того же входа; отключите эту опцию, чтобы вместо этого увидеть `any`. Переводы строк Windows и Unix обрабатываются одинаково, а итоговая строка под выводом сообщает, сколько объявлений и полей было сгенерировано.

Всё работает в вашем браузере. Схема, которую вы вставляете, никогда не загружается никуда, поэтому её безопасно использовать с кодом валидации неопубликованного API. Скопируйте результат, загрузите его как файл `.txt` или отправьте прямо в другой инструмент, чтобы продолжить работу.

FAQ

Какую версию Zod это поддерживает?
Общие функции-фабрики и методы цепочки из Zod v3 и v4 — объекты, массивы, unions, записи и остальное. Пользовательские трансформации и уточнения анализируются и пропускаются, так как их влияние на тип не может быть определено только из текста схемы.
Что происходит с вызовами .refine(), .transform() и подобными?
Они распознаются и игнорируются: инструмент сохраняет тип, который была схема до вызова, так как он не может вычислить произвольную функцию, чтобы узнать, как трансформация изменяет форму.
Может ли он обработать схему, разделённую по нескольким объявлениям const?
Да. Каждая объявленная схема во входе преобразуется в свой собственный интерфейс или тип в порядке появления, так что общая подсхема, на которую ссылаются по имени в другой, разрешается правильно.
Почему моя схема показывает ошибку вместо преобразования?
Обычно это отсутствие закрывающей скобки, круглой скобки или кавычки где-то в вставленном коде. Проверьте, что каждый z.object({ ... }) и литерал массива правильно закрыты.
Моя схема загружается куда-нибудь?
Нет. Преобразование выполняется полностью в вашем браузере — ваша схема никогда не покидает ваше устройство.