Используйте этот генератор JSON to TypeScript для создания типобезопасных интерфейсов и типов из образцов JSON для внешних приложений и служб Node.js.
Шаг 1. Вставьте образец JSON.
- Вставьте типичный объект или массив JSON в левый редактор.
- Включите вложенные объекты, массивы и поля, допускающие значение NULL, чтобы типы выводились правильно.
- Используйте
Import для загрузки JSON из файла, URL-адреса или образца данных.
Шаг 2. Выберите параметры генерации TypeScript.
- Установите
Root Type Name, соответствующий вашей модели (например, Root). - Выберите стратегию обработки null (
Optional (?) вместо Union (| null)), соответствующую вашей кодовой базе. - Решите, хотите ли вы использовать псевдонимы
interfaces или type для вывода.
Шаг 3. Просмотрите сгенерированный код.
- Проверьте имена полей, типы и способ моделирования массивов/объектов.
- Настройте такие параметры, как
Root Type Name, обработку значений NULL и платформы, если они доступны. - Если поле выведено неправильно, измените образец JSON и выполните его повторное создание.
Шаг 4 – Используйте сгенерированные типы
- Вставьте выходные данные в свой проект и экспортируйте их из модуля типов.
- Используйте типы для ответов API, DTO и границ анализа во время выполнения.
- Выполняйте регенерацию при изменении полезных данных JSON, чтобы обеспечить синхронизацию клиентов.
Шаг 5 – Скопируйте или загрузите
- Скопируйте выходные данные в свой проект или загрузите их в виде файла.
- Запустите форматтер/линтер в соответствии со стилем вашего кода.
- Добавьте библиотеки синтаксического анализа/сериализации JSON, если они требуются для вашего языка.
Пример вывода (упрощенный)
// Ввод JSON
{
"id": 123,
"name": "Maeve Winters",
"email": "[email protected]",
"active": true,
"roles": ["admin", "editor"],
"metadata": { "plan": "pro" },
"createdAt": "2024-03-01T10:15:00Z",
"score": 99.5,
"notes": null
}
// Generated TypeScript types (simplified)
export interface Metadata {
plan: string;
}
export interface Root {
id: number;
name: string;
email: string | null;
active: boolean;
roles: string[];
metadata: Metadata;
createdAt: string;
score: number;
notes: null;
}