Что такое JSON в TypeScript?
JSON to TypeScript преобразует JSON-данные в TypeScript-интерфейсы и определения типов. Распознаёт строки, числа, булевы значения, массивы и вложенные объекты, помечая nullable-поля как необязательные с union-типами. Не тратьте время на ручное написание типов для API-ответов.
Когда массив содержит объекты с чуть разной формой, генератор объединяет их: ключи, которых нет в части записей, помечаются опциональными через `?`. Каждый вложенный объект получает свой именованный interface (User, UserAddress, UserAddressGeo). Смешанные массивы дают объединения вроде `(string | number)[]`. Строки в формате ISO 8601 помечаются JSDoc-комментарием, а строковые поля, которые в выборке принимают лишь небольшой набор повторяющихся значений, выводятся как объединение строковых литералов вместо обычного string. Помимо вывода TypeScript из того же ввода доступны ещё три вкладки: парная Zod-схема, тестовые данные с реалистичными значениями-заглушками и JSON Schema draft-07. Переключайтесь между interface и type-алиасом, включайте слово `export`, сортируйте ключи от A→Z и включайте camelCase, чтобы привести ключи snake_case или kebab-case к привычным для TypeScript именам.
Как использовать
- Шаг 1 — Вставьте JSON-объект или массив, перетащите файл .json в поле ввода, либо подтяните живой JSON по URL. Инструмент анализирует структуру и определяет TypeScript-типы для каждого поля.
- Шаг 2 — Настройте вывод: задайте имя корневого интерфейса, выберите между интерфейсами и псевдонимами типов, включите или выключите необязательные свойства для полей, которые могут быть null.
- Шаг 3 — Скопируйте вывод или скачайте его. Четыре вкладки используют одни и те же настройки: типы TypeScript, парная Zod-схема для валидации в рантайме, готовые тестовые данные для тестов и Storybook, а также JSON Schema draft-07 для OpenAPI или библиотек форм. Все вложенные объекты автоматически получают собственные именованные интерфейсы.
Когда использовать
- Типизировать ответ API, для которого нет спецификации OpenAPI/Swagger.
- Быстро получить типы для JSON-конфига (tsconfig.json, package.json), который читаете в скрипте.
- За секунды поднять типизированную обёртку над ответом стороннего SDK.
Результат
Ваш API возвращает объект пользователя с вложенными адресом и настройками. Вставьте JSON-ответ, установите корневое имя «User», и получите чистые интерфейсы: User, UserAddress, UserPreferences — с правильными типами, например «string | null» для необязательных полей.
Частые вопросы
- Как генератор решает, какие поля считать опциональными?
- Если на входе один объект и включена опция «Помечать nullable как опциональные», поля со значением null получают `?`. Для массива объектов генератор объединяет ключи всех записей: пропавшие хотя бы в одной становятся опциональными.
- А если у элементов массива разная форма?
- Логика та же: ключи, которые есть во всех элементах, остаются обязательными; присутствующие только в части — становятся опциональными; значения со смешанными примитивными типами превращаются в объединения вроде `string | number`. Получается один интерфейс, описывающий весь массив.
- Что выбрать: interface или type alias?
- Интерфейсы удобнее расширять через declaration merging, и это стандартный выбор для форм API. Type alias лучше подходит, когда нужно сочетание с объединениями, пересечениями и mapped-типами. В рантайме разницы нет — пользуйтесь тем, что принято в кодовой базе.
- Почему некоторые имена свойств в выводе заключены в кавычки?
- Если ключ содержит символы, не подходящие для идентификатора TypeScript (дефис, пробел, начинается с цифры, точка), генератор оборачивает его в кавычки. Тип остаётся валидным, а доступ в коде ведётся через `obj["weird-key"]`.
- Будут ли сгенерированные типы ловить изменения схемы API?
- Только если перегенерировать. Типы — это снимок JSON, который вы вставили, сами они не обновляются. Обычная практика: перегенерировать при смене версии API и смотреть diff на код-ревью.
Похожие инструменты
Поиск рифм
Находите точные и приблизительные рифмы к любому слову
Решатель анаграмм
Найдите все допустимые анаграммы для любого слова
Поиск Unicode
Поиск символов Unicode по имени или коду
Кодировщик/Декодировщик URL
Кодирование и декодирование URL мгновенно
Фонетический алфавит НАТО
Преобразуйте текст в фонетический алфавит НАТО
Счётчик абзацев
Подсчитайте абзацы в тексте