Инструменты
RU

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

Вставьте пример JSON — например, ответ API — и получите готовые к использованию интерфейсы TypeScript. Типы полей, необязательные свойства и union-типы определяются по данным.

JSON → TypeScript

JSON

TypeScript

Конфиденциально: ваши данные обрабатываются в браузере и никуда не загружаются.

Как сгенерировать TypeScript из JSON

  1. Вставьте пример JSON. Чем больше элементов в его массивах, тем точнее определяются необязательные поля и union-типы.
  2. Задайте имя корневого типа и выберите interface или type — с export и readonly или без них.
  3. Скопируйте код TypeScript в свой проект или скачайте его как файл .ts.

Как типы TypeScript выводятся из JSON

JSONTypeScript
"Ada"string
42, 3.14number
trueboolean
null рядом с другими значениямиобъединение вроде string | null
"address": {"city": "Paris"}отдельный interface Address
"users": [{"id": 1}]User[] — имя элемента ставится в единственное число
ключ, которого нет в некоторых элементах массиванеобязательное свойство key?:
[1, "a"](string | number)[]
[]unknown[]
{}Record<string, unknown>

Пример конвертации

JSON {"id": 1, "name": "Ada", "tags": ["admin"], "manager": null} превращается в:

export interface Root { id: number; name: string; tags: string[]; manager: null; }

Переименуйте Root во что-нибудь осмысленное, например User или ApiResponse. Вложенные объекты с одинаковой структурой — скажем, платёжный адрес и адрес доставки — используют один общий интерфейс, а ключи, которые не являются допустимыми идентификаторами, заключаются в кавычки, например "first-name": string.

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

Interface или type — что выбрать?

Для описания формы объектов они ведут себя одинаково. Интерфейсы можно расширять и объединять, а псевдонимы типов (type) умеют описывать ещё и union-типы. Многие команды используют интерфейсы для объектов; придерживайтесь стиля, принятого в вашей кодовой базе.

Как определяются необязательные поля?

Объекты внутри одного массива объединяются. Ключ, которого нет в некоторых из них, становится необязательным (key?:), а ключ со значениями разных типов — union-типом.

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

Нет. Типы TypeScript исчезают при выполнении кода. Чтобы проверять входящие данные, сгенерируйте JSON Schema из того же примера с помощью нашего генератора JSON Schema и валидируйте данные по ней с помощью библиотеки для работы со схемами.

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

Нет. Типы генерируются в вашем браузере, поэтому можно спокойно вставлять приватные ответы API.