OpenReplay Logo
12k
12k

Конвертер JSON в TypeScript

Преобразуйте JSON в аккуратные интерфейсы или типы TypeScript — вложенные объекты становятся именованными, дедуплицированными интерфейсами, обработка выполняется локально в вашем браузере.

Вывод
Обрабатывается локально

Об этом инструменте

Конвертер JSON в TypeScript читает документ JSON и выводит для него статический тип: скаляры отображаются в string, number и boolean; массивы становятся T[]; а вложенные объекты извлекаются в собственные именованные интерфейсы вместо встраивания. Этот инструмент обходит всё дерево значений, объединяет ключи каждого объекта в массиве (помечая как необязательные ключи, которые отсутствуют в некоторых элементах), дедуплицирует объекты с идентичной формой, чтобы они переиспользовали один интерфейс, и заключает в кавычки любое имя свойства, не являющееся допустимым идентификатором. Значения null объединяются в union с типом соседа, когда такое значение встречается, пустые массивы становятся unknown[], а пустые объекты становятся Record<string, unknown>.

Используйте его, чтобы превратить ответ API в типизированные модели без написания их вручную, чтобы создать интерфейсы из файла фикстур или конфигурации, или чтобы проверить, какую форму на самом деле имеет полезная нагрузка, прежде чем интегрировать её в ваш код. Переименуйте корневой тип, переключайтесь между выводом interface и type в соответствии с соглашениями вашей кодовой базы, и результат регенерируется в реальном времени по мере вставки или редактирования — затем скопируйте его прямо в файл .d.ts или модели.

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

Часто задаваемые вопросы

Генерирует ли он интерфейсы TypeScript или псевдонимы типов?

И то, и другое. По умолчанию используется interface, который лучше всего подходит для моделей объектов, которые вы, возможно, захотите расширить или объединить; переключитесь на параметр type, чтобы вместо этого выдавать псевдонимы типов, которые могут выражать объединения и кортежи, недоступные интерфейсам.

Как он обрабатывает массив объектов с разными ключами?

Он объединяет ключи всех элементов в один интерфейс. Любой ключ, отсутствующий хотя бы в одном элементе, помечается как необязательный с помощью ?, поэтому сгенерированный тип безопасно описывает все элементы массива.

Почему два вложенных объекта имеют одно и то же имя интерфейса?

Объекты с идентичным набором полей и типов полей дедуплицируются в один именованный интерфейс и переиспользуются, что сохраняет вывод компактным и избегает почти идентичных дублирующихся определений.