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

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

Генерация интерфейсов TypeScript из JSON

Типизировать ответы API вручную долго, и ошибиться при этом легко. Конвертер анализирует пример JSON и создаёт по одному экспортируемому интерфейсу на каждую форму объекта: вложенные объекты получают собственные именованные интерфейсы, массивы становятся типизированными массивами вроде string[], а числа, строки и логические значения отображаются в number, string и boolean. Результат содержит только объявления типов без какого-либо исполняемого кода, поэтому размер бандла не увеличивается.

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

  1. Вставьте реальный ответ API, с которым вы интегрируетесь, — например, скопированный из вкладки «Сеть» в инструментах разработчика браузера.
  2. Укажите имя типа, отражающее суть корневого объекта, например User или ApiResponse.
  3. Скопируйте интерфейсы в файл types.ts и типизируйте результат запроса, например const user: User = await res.json().

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

Генерируются интерфейсы или псевдонимы типов (type)?
Генерируются экспортируемые интерфейсы. Для типизации данных API они ведут себя так же, как объектные псевдонимы типов, и после копирования их можно свободно переименовать или преобразовать.
Как получить необязательные свойства (field?: string)?
Генератор знает только то, что есть в примере. Поместите в массив несколько объектов, в части из которых поле отсутствует, — тогда свойство будет сгенерировано как необязательное. Поле, которое в примере всегда равно null, получит тип null, поэтому, если вы знаете его настоящий тип, подставьте реальное значение.
Проверяют ли интерфейсы данные во время выполнения?
Нет. Типы TypeScript стираются при компиляции, поэтому некорректный ответ не вызовет исключения. Если нужны проверки во время выполнения, сгенерируйте JSON Schema с помощью инструмента JSON Schema и валидируйте данные по ней или используйте библиотеку валидации.

Пример: JSON в TypeScript

Исходный JSON

{
  "id": 42,
  "name": "Ada Lovelace",
  "email": "ada@example.com",
  "roles": ["admin", "editor"],
  "profile": { "bio": "Mathematician", "website": "https://example.com" }
}

Сгенерированный код: TypeScript (User)

export interface User {
    id:      number;
    name:    string;
    email:   string;
    roles:   string[];
    profile: Profile;
}

export interface Profile {
    bio:     string;
    website: string;
}

Преобразовать JSON в другие языки