JSON в TypeScript

Работает офлайнНичего не загружаетсяБесплатно, без регистрации

Разбор и вывод типов идут в этой вкладке — полезная нагрузка не покидает браузер.

Вставьте JSON — получите интерфейсы TypeScript, которые не стыдно оставить: вложенные объекты именуются, массивы объединяют типы элементов, одинаковые формы делят одно имя, а null остаётся видимым, не превращаясь в any.

Из одного образца — честно

Вывод из одной нагрузки видит только то, что она показывает: иногда отсутствующее поле выглядит обязательным, число-иногда-строка — числом. Поэтому сгенерированное — первый черновик с готовой структурой: имена, вложенность, массивы, кавычки вокруг враждебных ключей; суждения, которые ни один инструмент не должен выносить молча, остаются вам.

Всё происходит в этой вкладке — и это важно именно потому, что настоящие нагрузки несут настоящие данные: токены, адреса, истории заказов. Codegen-страница, загружающая ваш JSON «на обработку», уже прочла ваши продакшен-данные; эта — структурно не может.

Частые вопросы

Как типизируются массивы?

По всем элементам, а не по первому: [1, 2] становится number[], [1, "x"] — (number | string)[], пустой массив — unknown[]: видимое признание вместо тихого any, выключающего проверки дальше по коду.

Что с повторяющимися формами?

Структурно одинаковые объекты делят один интерфейс: список пользователей даёт единый User, на который ссылаются всюду, — не User, User2, User3. Разные формы с одинаковым именем ключа нумеруются, а не сливаются — слияние прятало бы настоящие различия.

Почему null показан буквально?

Потому что ваш API его действительно шлёт. Поле string | null заставляет вызывающий код обработать случай; поле, тихо расширенное до any, прячет его до продакшена. Если null-поле на самом деле необязательное — ужесточите тип руками: инструмент отказывается гадать.

Умеет ли он помечать поля необязательными по нескольким образцам?

Пока нет — один образец на входе, один честный черновик на выходе. Вставьте массив из нескольких объектов — union-типы уже покажут изменчивые поля; превращение этого в ?-метки — запланированное улучшение.

Похожие инструменты