Что такое конвертер JSON в TypeScript?
Преобразователь JSON в TypeScript считывает пример значения JSON - ответ API, файл конфигурации, запись базы данных - и записывает интерфейсы TypeScript, которые его описывают Вложенные объекты становятся собственными именованными интерфейсами, массивы объектов объединяются в единый интерфейс элементов, а не в разрастающееся объединение, а ключи, которые нулевые или отсутствуют в некоторых записях, помечаются необязательными. Вы вставляете уже имеющиеся данные; вы получаете типы, которые в противном случае вы бы написали от руки.
Ввод ответа API вручную утомителен и подвержен ошибкам определенным образом: вы вводите то, что вы * думаете* конечная точка возвращает, а не то, что она возвращает. поля, которые вы никогда не замечали, опускаются, целое число, которое иногда нулевое, вводится как `number`, и ошибка всплывает во время выполнения в производстве, а не в вашем редакторе. Создание типов прямо из реальной полезной нагрузки закрывает этот пробел, потому что форма, против которой вы компилируете, - это форма, которую отправил сервер.
Все работает в вашем браузере. механизм вывода - это TypeScript без зависимостей, а не оболочка вокруг удаленного сервиса, поэтому полезные нагрузки, которые обычно несут токены доступа, записи клиентов и внутренние идентификаторы, никогда не покидают страницу. Выберите интерфейсы или псевдонимы типов, переключите ключевое слово `export` и модификаторы `readonly`, выберите ширину отступа, затем скопируйте вывод или загрузите файл.ts.
Быстрый способ увидеть, что JSON к TypeScript конверсия дает вам является встроенный сэмпл. Нажмите Load Sample, затем Generate. вы получаете три интерфейса JSON к TypeScript: `Rooth`, `Owner` и `Release`. Второй релиз не имеет `notes` ключ, поэтому объединенный интерфейс `Release` читает `notes?: string, и `retiredAt является нулевым в единственной записи, так что он становится `retiredAt?: null`.That является честным результатом, потому что один null не дает доказательств реального типа. Чтобы конвертировать JSON в TypeScript для реальной конечной точки, вставьте несколько записей, чтобы вывод имел больше для сравнения.
Сгенерированные интерфейсы описывают предоставленную вами выборку, а не 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!