JSON в TypeScript
Бесплатный онлайн-инструмент JSON в TypeScript. Автоматически выводит типы данных JSON в стандартные определения TS interface. Поддержка вложенных под-интерфейсов, объединённых типов массивов, опциональных и readonly полей, выбор отступа 2/4 пробела, полностью локальная обработка в браузере без загрузки.
Похожие
О JSON в TypeScript: автоматическое преобразование данных JSON в TS-типы
JSON в TypeScript — это процесс преобразования данных в формате JSON (JSON-объектов или JSON-массивов) в объявления типов TypeScript interface. JSON (JavaScript Object Notation) как стандартный формат данных для REST API, конфигурационных файлов и журналов повсеместно используется в фронтенд- и бэкенд-разработке, а TypeScript является надмножеством JavaScript, добавляющим в код статическую проверку типов. В разработке часто требуется написать соответствующий TS interface для JSON, возвращаемого API, ручное написание подвержено ошибкам и занимает много времени — этот инструмент автоматизирует этот процесс.
Ядром инструмента является автоматический вывод структуры JSON-объекта в TypeScript interface. Каждый key JSON-объекта становится именем свойства interface, каждый литеральный тип value сопоставляется с соответствующим типом TS: строка в `string`, число в `number`, булево в `boolean`, null в `null`, массив в `T[]`, вложенный объект в независимый под-интерфейс. Весь процесс выполняется локально в браузере, без необходимости в бэкенд-сервисе, за несколько секунд генерируется полное готовое определение типа.
Вывод типов — это ядро преобразования JSON в TypeScript. Сам JSON имеет только 6 базовых типов (null, boolean, number, string, array, object), тогда как базовая система типов TypeScript включает string, number, boolean, null, undefined, any, unknown, void, never, object, Array, T[], объединённые типы (A | B) и т.д. Функция getTsType нашего инструмента выполняет сопоставление по typeof и конкретной форме value: typeof null сопоставляется с `null`; typeof undefined с `undefined`; typeof boolean с `boolean`; typeof number с `number`; typeof string с `string`; при срабатывании Array.isArray() обрабатывается как массив.
Обработка вложенных объектов — ключевая возможность инструмента. Когда JSON содержит вложенные объекты, инструмент рекурсивно генерирует независимые под-интерфейсы, избегая дублирования типов. Например, `address: { street, city }` сгенерирует под-интерфейс `RootAddress`, а основной interface будет ссылаться на него через `address: RootAddress`. Правило именования под-интерфейсов: «имя родительского interface + первая буква имени поля в верхнем регистре», что сохраняет семантическую ясность. Set processedTypes используется для дедупликации, вложенные объекты одинаковой структуры генерируют interface только один раз.
Вывод типов массивов имеет три режима обработки. Во-первых, если массив пуст, генерируется `any[]` в качестве запасного варианта (поскольку тип элемента не может быть выведен). Во-вторых, если все элементы одного типа, генерируется форма `T[]` (например, `string[]`, `User[]`). В-третьих, если типы элементов различаются, генерируется объединённый массив `(A | B)[]` (например, `(string | number)[]`). Это различие делает сгенерированные типы точными и читаемыми, избегая чрезмерного использования `any[]`.
Опциональные поля (?) — важная функция строгого режима TypeScript. При включении инструмент сканирует значение каждого поля, и если оно null или undefined, добавляет модификатор `?` в interface: `name?: string` означает, что поле может отсутствовать. Это очень полезно для опциональных полей, возвращаемых бэкенд-API, позволяя избежать ошибок времени выполнения при доступе к undefined-полям. Readonly-поля подчёркивают неизменяемость, сгенерированный код выглядит как `readonly id: number`, подходит для определения конфигураций, снимков состояния, DTO и т.д.
interface vs type alias — частый выбор для пользователей TypeScript. Этот инструмент выбрал генерацию interface, потому что interface — это стандартный способ описания типов объектов в TypeScript, поддерживающий слияние объявлений (declaration merging), ключевое слово implements, наследование extends, что лучше соответствует стандартам кодирования основных фронтенд-проектов на React, Vue, Angular. type alias более мощный при описании объединённых типов, перекрёстных типов, типов функций, но для типов объектов предпочтителен interface.
Преобразование в реальном времени — практичная функция инструмента. После ввода пользователем JSON через 400ms срабатывает debounce и автоматически запускается преобразование, без необходимости нажимать кнопку. В сочетании с подсветкой синтаксиса TypeScript в CodeMirror (через опцию typescript: true в @codemirror/lang-javascript), пользователь может мгновенно видеть сгенерированный interface, изменять ввод и наблюдать изменения вывода. Эта обратная связь в реальном времени значительно повышает эффективность проектирования типов, особенно при быстрых экспериментах.
Авто-исправление ошибок JSON повышает устойчивость инструмента. На практике в JSON, вводимом пользователями, часто встречаются замыкающие запятые, одинарные кавычки, отсутствие кавычек, комментарии и другие мелкие проблемы. Встроенная функция tryFixJSON автоматически пытается исправить распространённые ошибки при сбое JSON.parse, в случае успешного исправления уведомляет пользователя; если всё ещё не удаётся распарсить, справа отображается конкретное местоположение и причина ошибки, направляя пользователя к исправлению. Этот дизайн выводит практичность инструмента на новый уровень, устраняя необходимость повторных ручных корректировок из-за мелких ошибок.
Чисто фронтенд-обработка — ключевая архитектура этого инструмента. Весь парсинг JSON, вывод типов и генерация interface выполняются в JavaScript браузера, никакие данные не отправляются на какой-либо сервер. Этот дизайн имеет два ключевых преимущества: во-первых, содержимое JSON может включать конфиденциальную информацию пользователя (API-ключи, токены, пользовательские данные), локальная обработка полностью устраняет риск утечки; во-вторых, скорость преобразования ограничена только CPU устройства, JSON размером менее 1MB преобразуется практически мгновенно, без ожидания сетевых往返. По сравнению с некоторыми онлайн-сервисами, требующими регистрации и входа, это обеспечивает лучшую защиту конфиденциальности и производительность.
Варианты использования
- При фронтенд-разработке быстро преобразовывать JSON-ответы REST API или GraphQL в TS interface, избегая ручного определения типов.
- Когда в проектах React/Vue/Angular требуется объявление типов для Props, State, параметров компонентов — сгенерировать за несколько секунд из образца JSON.
- В полностековых TypeScript-проектах, когда фронтенд и бэкенд разделяют определения типов, mock JSON бэкенда может служить источником истины типов для фронтенда.
- При интеграции со сторонними API (доставка, погода, платежи и т.д.) быстро генерировать соответствующие TypeScript-интерфейсы, избавляя от необходимости изучать документацию.
- Обратный вывод определений типов из mock-данных, тестовых фикстур, JSON-конфигураций для усиления типобезопасности и подсказок IDE.
- Преобразование JSON Schema, экспортированных из ORM базы данных, в TypeScript interface для интеграции в определения DTO бэкенда Node.js.
- При изучении TypeScript преобразовывать существующий JSON в пример interface, чтобы понять синтаксис вложенных типов, объединённых типов, опциональных полей.
- При рефакторинге кода преобразовывать разрозненные JS литералы объектов в формальные interface, повышая читаемость кода и типобезопасность.
Как использовать
- Вставьте содержимое JSON в левое поле ввода, или нажмите кнопку «Загрузить» для выбора файла .json/.txt, или нажмите «Пример» для загрузки встроенного образца.
- Нажмите кнопку имени interface справа на панели инструментов (или значок шестерёнки), настройте имя корневого interface (по умолчанию Root), включите опциональные/readonly поля.
- Инструмент выполнит преобразование автоматически (debounce 400ms после ввода); справа просмотрите сгенерированный код TypeScript interface, подсветка CodeMirror облегчает чтение.
- Выберите стиль отступа (2 или 4 пробела), отрегулируйте ширину левой/правой панели для оптимального просмотра.
- Нажмите «Копировать» для копирования TS-кода в буфер обмена, или «Загрузить» для сохранения в виде файла `${interfaceName}.ts` (например, User.ts).
- Вставьте код в каталог `types/` или `src/types/` вашего проекта, при необходимости используйте через import.
Функции
- Умный вывод типов: автоматически распознаёт типы null, boolean, number, string, array, object и т.д. и сопоставляет их с нативным синтаксисом TS.
- Автоматическое раскрытие вложенных объектов: для вложенных объектов автоматически создаются независимые под-интерфейсы (например, RootAddress), сохраняя чёткую иерархию типов и избегая избыточности.
- Умная обработка типов массивов: для элементов одного типа генерируется `T[]`, для смешанных — объединённый массив `(A | B)[]`, для пустых массивов — `any[]` в качестве запасного варианта.
- Маркировка опциональных полей: при включении автоматически обнаруживает поля null/undefined, добавляет модификатор `?`, генерируя код, совместимый со строгим режимом TypeScript.
- Поддержка Readonly полей: при включении ко всем полям добавляется модификатор `readonly`, подходит для неизменяемых состояний, конфигураций, DTO и т.д.
- Настройка имени interface: имя корневого interface настраивается (по умолчанию Root), имя загружаемого файла также использует это имя (например, User.ts).
- Выбор отступа 2/4 пробела: переключение одним кликом на панели инструментов между стилями 2 пробела (ESLint по умолчанию) и 4 пробела.
- Автоматическое преобразование в реальном времени: после ввода JSON через 400ms срабатывает debounce и автоматическое преобразование, без нажатия кнопки; поддержка вставки, загрузки файла, примера — три способа ввода.
- Авто-исправление ошибок JSON: встроенная функция tryFixJSON автоматически обрабатывает замыкающие запятые, одинарные кавычки, отсутствие кавычек и другие распространённые синтаксические ошибки.
- Подсветка TypeScript кода: правый вывод использует подсветку CodeMirror + JavaScript (TypeScript), с высокой читаемостью.
- Копирование и загрузка: одним кликом копирование в буфер обмена или загрузка стандартного файла .ts для непосредственного использования во фронтенд-проекте.
- Полностью локальная обработка в браузере: весь парсинг JSON, вывод типов и генерация interface выполняются в JavaScript браузера, исходные данные не загружаются.
Часто задаваемые вопросы
Как преобразовать JSON в TypeScript interface?
Вставьте содержимое JSON в левое поле ввода, инструмент автоматически определит тип каждого поля (string, number, boolean, array, object и т.д.) и сгенерирует стандартное определение TypeScript interface. Вложенные объекты автоматически создадут под-интерфейсы, сохраняя чёткую иерархию типов. Преобразование происходит автоматически через 400ms после ввода, без необходимости нажимать кнопку.
Поддерживается ли генерация type alias или interface?
Инструмент генерирует только объявления TypeScript interface (type alias не поддерживается). interface — это стандартный способ описания типов объектов в TypeScript, поддерживающий слияние объявлений (declaration merging) и ключевое слово implements, что является предпочтительным для фронтенд-проектов на React, Vue, Angular.
Как пометить опциональные поля?
Включив в настройках «Опциональные поля (?)», инструмент автоматически обнаружит поля со значением null или undefined и добавит модификатор `?` в interface. Например, `name?: string` означает, что поле может отсутствовать. Сгенерированный код соответствует спецификации строгого режима TypeScript strict.
Как сгенерировать readonly поля?
Включив в настройках «Readonly поля», ко всем полям будет автоматически добавлен модификатор `readonly`, например `readonly id: number`. Сгенерированный interface подчёркивает неизменяемость, подходит для определения конфигураций, снимков состояния или DTO.
Как обрабатываются типы массивов?
Инструмент анализирует типы элементов массива. Если все элементы одного типа, генерируется форма `T[]` (например, `string[]`); если типы различаются, генерируется объединённый массив `(A | B)[]` (например, `(string | number)[]`); если массив пуст, в качестве запасного варианта генерируется `any[]`.
Генерирует ли вложенные объекты несколько interface?
Да. Каждый вложенный объект генерирует независимый под-интерфейс, правило именования: «имя родительского interface + первая буква поля в верхнем регистре». Например, если Root содержит объект address, будут сгенерированы оба interface: Root и RootAddress. Под-интерфейсы автоматически ссылаются друг на друга, избегая дублирования определений типов.
Можно ли настроить имя interface?
Да. Нажав кнопку имени interface справа на панели инструментов (или в настройках), можно настроить имя корневого interface (по умолчанию Root). Загружаемый файл .ts также будет назван в соответствии с этим именем (например, `User.ts`). Имена под-интерфейсов автоматически генерируются на основе корневого имени.
Можно ли использовать загруженный .ts файл непосредственно в проекте?
Да. Сгенерированный код соответствует стандартам кодирования TypeScript, содержит полные определения типов, вложенные interface, вывод объединённых типов и т.д., и может быть непосредственно скопирован в проекты на React, Vue, Angular или Node.js. Имя загружаемого файла — `${interfaceName}.ts`, например User.ts.
Что делать, если JSON не удаётся распарсить?
Если в JSON есть распространённые ошибки, такие как замыкающие запятые, отсутствие кавычек, использование одинарных кавычек вместо двойных, инструмент автоматически вызовет tryFixJSON для попытки исправления. В случае успешного исправления пользователю будет выведено уведомление; если исправить не удаётся, справа будет отображено конкретное местоположение и причина ошибки. Можно повторно отформатировать с отступом 2/4 пробела и попробовать снова.
Какие структуры данных JSON поддерживаются?
Поддерживаются все допустимые структуры данных JSON: базовые типы (null, boolean, number, string), массивы (одномерные или многомерные), вложенные объекты (любая глубина), массивы со смешанными типами (генерируют объединённые типы). Неподдерживаемые входные данные: JSON, содержащий функции, Symbol, undefined и другие специальные значения JavaScript (они не являются допустимым JSON).
Можно ли выбрать количество пробелов для отступа?
Да. Справа на панели инструментов есть выпадающий список настроек отступа, поддерживающий стили с 2 и 4 пробелами. 2 пробела — стиль по умолчанию для ESLint/Prettier, 4 пробела подходят для проектов, требующих более свободного отступа. Сгенерированный код сохраняет единообразный отступ для удобства чтения и поддержки.
В чём отличие от JSON Schema, Zod и других библиотек типов?
JSON Schema подходит для валидации данных во время выполнения (границы API, валидация пользовательского ввода); Zod/yup — это дружественные к TypeScript библиотеки валидации времени выполнения, которые могут генерировать TS-типы из schema; наш инструмент — это лёгкий генератор чистых определений типов, не выполняющий валидации во время выполнения, ориентированный на сценарии статических определений типов фронтенда, более быстрый и с нулевыми зависимостями.
Устранение неполадок
Что делать, если сгенерированный interface некорректен?
Распространённые причины: сбой парсинга JSON, ошибка распознавания вложенных объектов, ошибка вывода типа массива. Решения: 1) Проверьте, является ли JSON валидным (используйте инструмент форматирования JSON); 2) Для вложенных объектов убедитесь в правильности ссылок под-интерфейсов; 3) Для массивов убедитесь, что типы элементов совпадают; 4) Пересгенерируйте или вручную подкорректируйте сгенерированный код. Сгенерированный interface — это черновик, детали необходимо корректировать в соответствии с реальным API проекта.
Загруженный .ts файл вызывает ошибки компиляции в проекте?
Возможные причины: 1) tsconfig.json не включает strict режим, но сгенерированы readonly поля; 2) Имя interface конфликтует с другими типами в проекте; 3) Имя поля является ключевым словом TypeScript (например, `class`, `type`). Решения: настройте параметр strict в tsconfig, измените имя interface, экранируйте конфликтующие поля кавычками (например, `"class": string`).
JSON содержит вложенные массивы, вывод типов неверен?
Этот инструмент рекурсивно обрабатывает многомерные массивы (например, `[[1, 2], [3, 4]]`), в итоге генерируя `number[][]`. Если типы элементов вложенного массива различаются, инструмент сгенерирует форму `((A | B)[])[]`. Пустые массивы всегда генерируют `any[]`, так как тип элемента не может быть выведен.
Значение null сопоставляется с типом `null`, а не с опциональным полем?
По умолчанию инструмент сопоставляет null в JSON с типом `null` в TS (например, `middleName: null`). Если вы хотите сгенерировать опциональное поле (`middleName?: string`), вам нужно: 1) Включить опцию «Опциональные поля» (рекомендуется); 2) Или изменить null в JSON на отсутствие поля; 3) Или после генерации вручную изменить `null` на `string | null` или `?`.
Имя interface и имя загружаемого файла не совпадают?
Оба значения в инструменте одинаковы и управляются настройкой «Имя interface» (по умолчанию Root). Имя загружаемого файла — `${interfaceName}.ts`. Если они кажутся несогласованными, проверьте, не открыто ли несколько вкладок, из-за чего настройки могут быть рассинхронизированы. Рекомендуется после изменения настроек пересоздать файл.
В сгенерированном коде много типов `any`?
Возможные причины: 1) JSON содержит нераспознаваемые типы (фактически object, но распарсен с ошибкой); 2) Массив пуст и используется запасной вариант any[]; 3) Значение поля null и опция опциональных полей не включена. Решения: проверьте целостность данных JSON, добавьте образцы данных для более точного вывода, вручную укажите тип для всегда пустых массивов (например, `User[]`).
Хочу объединить сгенерированный interface с существующими типами?
TypeScript interface поддерживает слияние объявлений (declaration merging), одноимённые interface автоматически объединяют свойства. Просто создайте в проекте одноимённый interface и экспортируйте его, затем объедините: например, инструмент сгенерировал `export interface User { id: number }`, вы в проекте пишете `export interface User { name: string }`, оба автоматически объединятся в `{ id: number; name: string }`.
Глоссарий
- JSON (JavaScript Object Notation)
- Лёгкий формат обмена данными, основанный на синтаксисе объектов JavaScript, но независимый от языка программирования. Поддерживает 6 базовых типов: объект ({}), массив ([]), строка, число, булево, null. Широко используется в REST API, передаче данных между фронтендом и бэкендом, конфигурационных файлах, журналах и т.д.
- TypeScript
- Надмножество JavaScript, разработанное Microsoft, добавляющее в JavaScript статические определения типов, интерфейсы, дженерики и другие возможности. Код TypeScript компилируется в чистый JavaScript для запуска в браузере или Node.js. Предпочтительный язык для современных фронтенд-проектов на React, Vue, Angular.
- interface (интерфейс)
- Ключевое слово TypeScript для описания типов объектов, синтаксис: `interface Name { prop: type; }`. Поддерживает слияние объявлений (одноимённые interface автоматически сливаются), implements (класс реализует интерфейс), extends (наследование интерфейса). Основной способ описания формы объектов в TypeScript.
- type alias
- Ключевое слово TypeScript для создания псевдонимов типов, синтаксис: `type Name = ...`. Может использоваться для определения объединённых типов (`A | B`), перекрёстных типов (`A & B`), типов функций и т.д. Более гибкое, чем interface, но не поддерживает слияние объявлений. Этот инструмент использует interface, а не type.
- Вывод типов (Type Inference)
- Процесс, в котором этот инструмент автоматически определяет соответствующий TS-тип на основе typeof и конкретной формы JSON value. Например, typeof string сопоставляется со string, при срабатывании Array.isArray() обрабатывается как массив, при typeof object генерируется независимый под-интерфейс.
- Опциональное поле (?)
- Модификатор TypeScript, указывающий, что поле может отсутствовать. `name?: string` означает, что поле name может не существовать (значение undefined). При включении опции «Опциональные поля» к полям со значением null или undefined автоматически добавляется `?`.
- Readonly поле (readonly)
- Модификатор TypeScript, указывающий, что поле является неизменяемым. `readonly id: number` означает, что поле id не может быть переназначено после создания объекта. При включении опции «Readonly поля» ко всем полям автоматически добавляется `readonly`.
- Объединённый тип (Union Type)
- Синтаксис TypeScript, указывающий, что значение может быть одного из нескольких типов, записывается как `A | B`. Инструмент использует его, когда типы элементов массива различаются, например `(string | number)[]` означает, что элементы массива могут быть string или number.
- Тип массива (Array Type)
- Синтаксис TypeScript для массивов, существует в двух формах: обобщённая `Array<T>` и сокращённая `T[]`. Инструмент единообразно использует сокращённую форму. Инструмент имеет три режима генерации типов массивов: однотипный `T[]`, смешанный `(A | B)[]`, пустой массив `any[]`.
- Вложенный интерфейс (Nested Interface)
- Ссылка на другие interface внутри interface для формирования иерархии типов. Инструмент генерирует независимый под-интерфейс для каждого вложенного объекта, основной interface ссылается через имя свойства. Например, Root ссылается на RootAddress, RootAddress может независимо использоваться другими типами.
- Строгий режим TypeScript (strict mode)
- Строгий режим компилятора TypeScript, включающий несколько подопций: noImplicitAny, strictNullChecks, strictFunctionTypes и т.д. После включения strictNullChecks null и undefined являются независимыми типами и не могут быть присвоены переменным других типов. Опциональные поля, генерируемые этим инструментом, полностью совместимы со строгим режимом.
- DTO (Data Transfer Object)
- Объект передачи данных, используемый для передачи данных между различными слоями (например, API и Service). В проектах TypeScript обычно описывается через interface, в сочетании с readonly подчёркивает неизменяемость. Этот инструмент — распространённый инструмент для генерации определений типов DTO.
- Слияние объявлений (Declaration Merging)
- Особенность TypeScript interface: одноимённые interface автоматически объединяют свойства. Часто используется для расширения определений типов сторонних библиотек. Сгенерированные этим инструментом interface могут сливаться с другими одноимёнными interface в проекте, что облегчает прогрессивное расширение типов.
- tsconfig.json
- Файл конфигурации TypeScript-проекта, расположен в корневом каталоге проекта. Содержит compilerOptions (target, module, strict и т.д.), include, exclude и другие настройки. Файлы .ts, сгенерированные этим инструментом, можно использовать в любом стандартном проекте с tsconfig.
- tryFixJSON
- Встроенная функция исправления JSON этого инструмента, которая автоматически обрабатывает замыкающие запятые, замену двойных кавычек одинарными, отсутствие кавычек в key, комментарии и другие распространённые синтаксические ошибки JSON. Автоматически вызывается при сбое JSON.parse, при успешном исправлении уведомляет пользователя и продолжает преобразование.
Правила сопоставления типов JSON с типами TypeScript
Полные правила, по которым функция getTsType нашего инструмента выводит типы TypeScript на основе формы JSON value:
| JSON значение | Пример | Тип TypeScript | Правило определения |
|---|---|---|---|
null | null | null | JSON null напрямую сопоставляется с типом TS null |
undefined | undefined | undefined | Значение undefined сопоставляется с TS undefined (только во время выполнения) |
boolean | true / false | boolean | typeof boolean сопоставляется с TS boolean |
integer | 1, 100, -9999 | number | Целые и дробные числа оба сопоставляются с TS number |
float | 3.14, -0.5, 1e10 | number | Все числовые литералы сопоставляются с number (TS не различает целые и дробные) |
string | "Alice", "Москва" | string | typeof string сопоставляется с TS string |
empty array | [] | any[] | Пустой массив не позволяет вывести тип элемента, запасной вариант any[] |
homogeneous array | [1, 2, 3] | T[] (напр. number[]) | Однотипные элементы генерируют единый тип массива |
mixed array | [1, "a"] | (A | B)[] (напр. (number | string)[]) | Разнотипные элементы генерируют объединённый тип массива |
object | {a: 1, b: "x"} | SubInterface (напр. Root) | Вложенный объект генерирует независимый под-интерфейс со ссылкой |
Сравнение interface vs type alias
Причины, по которым этот инструмент генерирует interface, а не type alias, и различия между ними в TypeScript-проектах:
| Измерение | interface | type alias | Примечание |
|---|---|---|---|
| Описание типов объектов | ✓ (предпочтительно) | ✓ (тоже поддерживается) | Оба поддерживаются, инструмент генерирует interface |
| Слияние объявлений | ✓ (одноимённые автослияние) | ✗ (повторное объявление — ошибка) | interface поддерживает прогрессивное расширение, type — нет |
| implements/extends | ✓ (класс может implements) | △ (только объектный type может быть implements) | interface более естественен в сценариях ООП |
| Объединённый тип (A | B) | ✗ | ✓ | type более лаконичен для объединённых типов |
| Перекрёстный тип (A & B) | ✗ | ✓ | type более лаконичен для перекрёстных типов |
| Тип функции | △ (требуется call signature) | ✓ (прямое определение) | type более интуитивен для типов функций |
| Производительность (для многих типов) | Немного быстрее | Немного медленнее | interface быстрее при инкрементальном слиянии во время компиляции |
| Выбор инструмента | ✓ Единообразно | ✗ | Инструмент фокусируется на типах объектов, interface — лучший выбор |
Правила генерации опциональных и readonly полей
Влияние двух переключаемых опций этого инструмента на сгенерированный код и оптимальные сценарии использования:
| Опция | Условие срабатывания | Сгенерированный синтаксис | Оптимальный сценарий использования |
|---|---|---|---|
| Опциональное поле (?): выкл | (по умолчанию) | name: string | Все поля обязательны, строгие типы |
| Опциональное поле (?): вкл | value === null || value === undefined | name?: string | Опциональные поля, данные с возможностью отсутствия |
| Readonly поле (readonly): выкл | (по умолчанию) | name: string | Универсальные типы, поля могут быть записаны |
| Readonly поле (readonly): вкл | Все поля обрабатываются единообразно | readonly name: string | Неизменяемое состояние, конфигурации, DTO, ответы API |
| Оба включены | Оба условия выполнены | readonly name?: string | Снимки ответов API, опциональные конфигурации |
Privacy & Security
Все операции этого инструмента JSON в TypeScript полностью выполняются локально в вашем браузере: парсинг JSON, вывод типов и генерация interface выполняются JavaScript браузера на стороне клиента, без отправки содержимого JSON, загруженных файлов или сгенерированного кода на какой-либо сервер через сеть. Загрузка файлов использует нативный браузерный API FileReader для непосредственного чтения в память, без промежуточных сервисов. Cookie-отслеживание не используется, пользовательский ввод или данные использования не собираются. После закрытия или обновления страницы всё содержимое ввода и вывода автоматически очищается из памяти. Подходит для обработки JSON, содержащего API-ключи, токены, конфиденциальные бизнес-данные.
Authoritative References
- TypeScriptTypeScript interface — официальная документация
- TypeScriptTypeScript — руководство для начинающих
- MDNСпецификация JSON - MDN Web Docs
- TypeScriptTypeScript Playground — онлайн-песочница
- TypeScripttsconfig.json — справка по конфигурации
- ZodZod - TypeScript-ориентированная библиотека валидации schema
- JSON Compress
- CSV в JSON
- JSON в CSV
- JSON Diff
- JSON Escape / Unescape
- Сглаживание JSON
- Форматтер JSON
- Генератор JSON
- JSONPath Запрос
- Объединение JSON
- Восстановление JSON
- Валидатор JSON Schema
- Сортировка JSON
- JSON Stringify
- JSON в HTML
- JSON в Java
- JSON в Markdown
- JSON в SQL
- JSON в TOML
- JSON в TypeScript
- XML в JSON
- Преобразовать JSON в XML
- YAML в JSON
- JSON → YAML Конвертер
- JSON в Go
- JSON в Rust
- JSON в Swift
- JSON в C#
- JSON в C++
- JSON в PHP
- JSON в Python