Что такое конвертер JSON в TypeScript?

Преобразователь JSON в TypeScript считывает пример значения JSON - ответ API, файл конфигурации, запись базы данных - и записывает интерфейсы TypeScript, которые его описывают Вложенные объекты становятся собственными именованными интерфейсами, массивы объектов объединяются в единый интерфейс элементов, а не в разрастающееся объединение, а ключи, которые нулевые или отсутствуют в некоторых записях, помечаются необязательными. Вы вставляете уже имеющиеся данные; вы получаете типы, которые в противном случае вы бы написали от руки.
Ввод вручную ответа API утомительно и подвержен ошибкам определенным образом: вы вводите то, что вы *думаете*, возвращает конечная точка, а не то, что она на самом деле возвращает. Поля, которые вы никогда не замечали, опускаются, целое число, которое иногда null, вводится как «номер», а ошибка появляется во время выполнения в процессе производства, а не в вашем редакторе. Генерация типов прямо из реальной полезной нагрузки закрывает этот пробел, потому что форма, которую вы компилируете, — это форма, которую фактически отправил сервер.
Все работает в вашем браузере. механизм вывода - это TypeScript без зависимостей, а не оболочка вокруг удаленного сервиса, поэтому полезные нагрузки, которые обычно несут токены доступа, записи клиентов и внутренние идентификаторы, никогда не покидают страницу. Выберите интерфейсы или псевдонимы типов, переключите ключевое слово `export` и модификаторы `readonly`, выберите ширину отступа, затем скопируйте вывод или загрузите файл.ts.
Сгенерированные интерфейсы описывают предоставленную вами выборку, а не API, который вы вызываете, и это различие - весь риск. поле, которое случайно присутствует в каждом объекте вашей выборки, отмечено необходимым, даже если сервер иногда его пропускает, а поле, которое в выборке является нулевым, нельзя отличить от поля, которое всегда является нулевым. Пустые массивы - самый ясный случай: массив без элементов не дает никакой информации о том, что он содержит. Объединение массивов помогает здесь, объединяя каждый объект в списке в один интерфейс и отмечая ключи, которые отсутствуют в некоторых записях, как необязательные, поэтому более крупная и разнообразная выборка создает более честный тип. Где API имеет схему или документ OpenAPI, сгенерируйте из этого вместо этого и используйте это для изучения недокументированного ответа.
Как использовать конвертер JSON в TypeScript?
Вставьте свой JSON
Откройте ответ API, файл приспособления или любое значение JSON. Сначала загрузите образец, если вы хотите увидеть, как обрабатываются вложенные объекты, массивы и поля NULL.
Назовите корневой тип
Установите имя корневого типа - обычно ресурс, например Пользователь или Счет. Вложенные интерфейсы называются автоматически из ключа, а имена элементов массива выделяются по отдельности (выпуски становятся выпуском).
Выберите свой стиль вывода
Выберите интерфейс или тип псевдонима, решите, следует ли экспортировать каждое объявление, добавить модификаторы ReadOnly, если ваша кодовая база предпочитает неизменяемые фигуры, и установите отступ в 2 или 4 пробелы.
генерировать, затем скопировать или загрузить
нажмите «Генерировать». Просмотрите предполагаемые опции и объединения, затем скопируйте код в свой буфер обмена или загрузите его в виде файла .TS, готовых поместить в папку «Типы».
Основные характеристики
Извлечение вложенного интерфейса
Каждый вложенный объект становится своим именованным многократным интерфейсом вместо встроенной анонимной формы, поэтому вы можете независимо импортировать и ссылаться на внутренние типы.
Слияние смарт-массивов
Массив объектов объединяется в один элемент интерфейса. Ключи, присутствующие в некоторых записях, но не другие, становятся необязательными, что именно так ведут реальные данные API.
Обработка с обнуляемым управлением
Выберите, означает ли значение NULL, что ключ является необязательным или принадлежит NULL в union. Оба соглашения являются обычным явлением; инструмент не навязывает одну из ваших кодов.
интерфейсы или псевдонимы типов
Выпускайте `User interface user {}` или `type user = {}`, чтобы соответствовать вашим существующим правилам lint, с необязательными модификаторами `export` и `readOnly`, применяемыми к каждому объявлению.
Frequently Asked Questions
Related Tools
JSON Flattener
Flatten nested JSON into single-level dot-notation keys, or unflatten dotted keys back into nested objects and arrays. Lossless round trip. 100% client-side.
JSON Schema Generator
Generate a JSON Schema from any JSON sample. Infers types, merges arrays of objects into one item schema, derives required fields, and detects date-time, email, uri, and uuid formats. Draft-07 and 2020-12 output. 100% client-side.
JSON to Go Struct
Convert JSON into Go struct definitions with json tags. Nested objects become inline structs, arrays of objects are merged, and field names follow Go conventions. Runs client-side.
JSONPath Tester
Test JSONPath expressions against any JSON and see the matched values and their paths instantly. Supports wildcards, recursive descent, slices, and filters. 100% client-side.
Comments
0 comments
No comments yet. Be the first to share your thoughts!