JSON в TypeScript — генерация типов онлайн
Вывод типов TypeScript по образцу JSON, включая вложенные объекты и массивы
Работает в браузере · файлы никуда не загружаются
Типы выводятся по одному образцу. Все свойства обязательные, пустой массив становится unknown[], а элементы разных типов дают объединение (union). Код проверки во время выполнения не создаётся.
Как пользоваться
- Вставьте образец JSON — ответ API или файл конфигурации.
- Задайте имя типа, например Root или ApiResponse.
- Скопируйте экспортируемый псевдоним типа в файл TypeScript.
- Проверьте свойства, которые в реальных ответах могут отсутствовать или быть null.
Правила вывода типов
Строки становятся string, числа — number, логические значения — boolean, null остаётся null. Каждое встреченное свойство объекта считается обязательным. Имена свойств заключаются в кавычки, поэтому кириллица, китайские иероглифы, эмодзи и знаки препинания остаются допустимыми ключами. Различные формы элементов массива объединяются в union, пустой массив получает тип unknown[]. Пустой объект превращается в Record<string, never>.
Это вывод по образцу, а не поиск схемы. Один успешный ответ не покажет все варианты ошибок и необязательные поля. Повторяющиеся ключи не отбрасываются молча — инструмент сообщает об ошибке. Комментарии и висячие запятые в JSON недопустимы. Имя типа может содержать только латинские буквы, цифры, подчёркивание и знак доллара, не может начинаться с цифры и не может быть зарезервированным словом. Размер ввода — до миллиона символов, глубина вложенности — до 64 уровней.
Примеры
{"name":"Миша","score":3,"tags":["中文","😀"]} даёт string для name, number для score и Array[1,"two",null] даёт Array<number | string | null>.
Конфиденциальность
Преобразование выполняется в браузере: ввод не загружается и не сохраняется. Результат — отправная точка для разработки; прежде чем полагаться на него, сравните его с документацией API.
Частые вопросы
Объединяются ли объекты разной формы в необязательные свойства?
Нет. Элементы массива разной формы становятся объединением (union) этих форм. Сверьте результат с реальным контрактом API.
Какой тип получает пустой массив?
unknown[], потому что по образцу нельзя понять, какие в нём элементы. Если ожидаемый тип известен, уточните его вручную.
Проверяет ли инструмент данные во время выполнения?
Нет. Он создаёт псевдоним типа (type alias), а не парсер или функцию проверки. После компиляции TypeScript типы исчезают.
Отправляется ли мой JSON на сервер?
Нет. Преобразование выполняется в браузере, ввод никуда не загружается и не сохраняется.