Конвертор JSON към TypeScript
Поставете отговор от API и получете готови за употреба TypeScript интерфейси или type aliases, с изведени вложени типове, незадължителни полета и обединения с null.
Работи в браузъраБез регистрацияНищо не се качва
Как да използвате: JSON към TypeScript
- Поставете примерен JSON, например отговор от API, в лявото поле или отворете файл
.json. - Задайте името на основния тип (например
UserилиApiResponse). - Изберете декларации
interfaceилиtypeи превключетеexport,readonlyили всички полета като незадължителни. - Изберете
unknown(по-безопасно) илиanyза стойности, които примерът не може да разкрие, като празни масиви и null. - Копирайте генерирания код или го изтеглете като файл
.ts.
Как се извеждат типовете
- Примитиви: низовете, числата и булевите стойности стават
string,numberиboolean. - Вложените обекти стават собствени именувани интерфейси в PascalCase, така че
billing_addressставаBillingAddress. - Масивите от обекти се обединяват в един тип на елемента, наименуван в единствено число:
usersдаваUser[]. Ключ, който липсва в някои елементи, става незадължителен (key?:). - Null стойностите се комбинират с другите стойности за този ключ:
string | null. Ключ, който винаги еnull, получаваunknownилиany. - Смесените масиви стават масиви от обединения, като
(number | string)[]. - Еднаквите структури се декларират веднъж и се преизползват, а различни структури, които биха имали едно име, получават числов суфикс.
- Ключове, които не са валидни идентификатори, като
"first-name"или"2fa", се поставят в кавички.
interface или type
За обикновени структури на обекти двете са почти взаимозаменяеми. Декларациите interface могат да се разширяват и сливат и дават малко по-ясни грешки от компилатора. Type aliases с type могат да изразяват и обединения и mapped types. Много екипи използват интерфейси за API модели и типове за всичко останало; изберете това, което очаква вашата кодова база или линтер (@typescript-eslint/consistent-type-definitions).
По-добри типове от вашия пример
Типовете могат да са само толкова пълни, колкото е примерът. Поставете отговор, който включва незадължителни полета, или масив с няколко различни елемента, за да може генераторът да открие незадължителните и nullable ключовете. Стойности като дати и енумерации пристигат като обикновени низове в JSON; стеснете ги ръчно след това, например status: 'active' | 'disabled'. За валидиране по време на изпълнение комбинирайте генерираните типове със схема библиотека като Zod.
Често задавани въпроси
Качва ли се моят JSON?
Как се откриват незадължителните свойства?
?. При единичен обект всеки ключ е задължителен, освен ако не отметнете Всички незадължителни.Да използвам ли <code>unknown</code> или <code>any</code>?
unknown е по-безопасно: TypeScript ви кара да стесните стойността, преди да я използвате. any изключва проверката на типовете за тази стойност. Използвайте го само ако смятате да прецизирате типовете по-късно.Защо ISO дата е с тип <code>string</code>?
new Date() след парсване, сменете свойството на Date във вашия модел.