onlinetools.dev

JSON → типи TypeScript

Миттєво виводьте інтерфейси TypeScript зі зразка JSON

Працює локально
loading…
Про цей інструмент

Вставте зразок JSON — відповідь API, файл конфігурації — і отримайте виведений із нього інтерфейс TypeScript: вкладені об’єкти стають вкладеними типами, масиви отримують типи елементів (з об’єднаннями для змішаного вмісту), а ключі, що не є коректними ідентифікаторами, беруться в лапки як належить.

Згенеровані типи — відправна точка, а не контракт: виведення бачить один зразок, тож поле, яке у вашому прикладі випадково було null, отримає тип null, а необов’язкові поля, яких там не було, йому просто невідомі. Вивід навмисне простий — без декораторів, без валідації під час виконання — тож його можна вставити будь-куди й доопрацювати.

Для полів, що різняться від запиту до запиту, пропустіть другий зразок і об’єднайте вручну, або переходьте на інструменти зі схемою наперед (OpenAPI, zod), щойно форма стабілізується. Для щоденного «мені просто потрібен тип для цієї відповіді» одного вставляння досить.

Часті запитання

Чому моє nullable-поле отримало тип просто null?
Виведення бачить лише той зразок, який ви вставили. Якщо поле там було null, то null — усе, що воно може знати. Після генерації змініть його на string | null (чи який там справжній тип) або вставте зразок, де поле заповнене.
Як обробляються необов’язкові поля?
Ніяк не виявляються — один зразок не відрізнить «є завжди» від «є цього разу». Поля, відсутні у зразку, відсутні й у типі. Позначайте поля необов’язковими (name?:) вручну там, де знаєте, що API їх пропускає.
Що дають масиви зі змішаними типами?
Об’єднання: [1, "a"] виводиться як (number | string)[]. Порожні масиви виводяться як unknown[], бо немає елемента для огляду — замініть на справжній тип елемента, коли він вам відомий.
Використовувати виведені типи чи бібліотеку схем на кшталт zod?
Виведені інтерфейси існують лише під час компіляції — вони нічого не перевіряють у рантаймі. Для внутрішніх інструментів і швидкої типізації вони чудові; для недовіреного введення в рантаймі опишіть схему zod/valibot і виведіть статичний тип уже з неї.
Пов’язані інструменти