Блог
Русский

JSON в TypeScript — генерация типов онлайн

Вывод типов TypeScript по образцу JSON, включая вложенные объекты и массивы

Работает в браузере · файлы никуда не загружаются

Типы выводятся по одному образцу. Все свойства обязательные, пустой массив становится unknown[], а элементы разных типов дают объединение (union). Код проверки во время выполнения не создаётся.

Результат

Как пользоваться

  1. Вставьте образец JSON — ответ API или файл конфигурации.
  2. Задайте имя типа, например Root или ApiResponse.
  3. Скопируйте экспортируемый псевдоним типа в файл TypeScript.
  4. Проверьте свойства, которые в реальных ответах могут отсутствовать или быть null.

Правила вывода типов

Строки становятся string, числа — number, логические значения — boolean, null остаётся null. Каждое встреченное свойство объекта считается обязательным. Имена свойств заключаются в кавычки, поэтому кириллица, китайские иероглифы, эмодзи и знаки препинания остаются допустимыми ключами. Различные формы элементов массива объединяются в union, пустой массив получает тип unknown[]. Пустой объект превращается в Record<string, never>.

Это вывод по образцу, а не поиск схемы. Один успешный ответ не покажет все варианты ошибок и необязательные поля. Повторяющиеся ключи не отбрасываются молча — инструмент сообщает об ошибке. Комментарии и висячие запятые в JSON недопустимы. Имя типа может содержать только латинские буквы, цифры, подчёркивание и знак доллара, не может начинаться с цифры и не может быть зарезервированным словом. Размер ввода — до миллиона символов, глубина вложенности — до 64 уровней.

Примеры

{"name":"Миша","score":3,"tags":["中文","😀"]} даёт string для name, number для score и Array для tags. [1,"two",null] даёт Array<number | string | null>.

Конфиденциальность

Преобразование выполняется в браузере: ввод не загружается и не сохраняется. Результат — отправная точка для разработки; прежде чем полагаться на него, сравните его с документацией API.

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

Объединяются ли объекты разной формы в необязательные свойства?

Нет. Элементы массива разной формы становятся объединением (union) этих форм. Сверьте результат с реальным контрактом API.

Какой тип получает пустой массив?

unknown[], потому что по образцу нельзя понять, какие в нём элементы. Если ожидаемый тип известен, уточните его вручную.

Проверяет ли инструмент данные во время выполнения?

Нет. Он создаёт псевдоним типа (type alias), а не парсер или функцию проверки. После компиляции TypeScript типы исчезают.

Отправляется ли мой JSON на сервер?

Нет. Преобразование выполняется в браузере, ввод никуда не загружается и не сохраняется.

Не нашли нужный инструмент?