Типы OpenAPI в TypeScript
Преобразуйте документ OpenAPI или Swagger в интерфейсы и типы TypeScript.
Типы OpenAPI в TypeScript
Вставьте документ OpenAPI 3 или Swagger 2 — JSON или YAML — и этот инструмент генерирует соответствующие интерфейсы TypeScript для каждой схемы в components/schemas, плюс один тип на конечную точку для её пути и параметров запроса, тела запроса и ответов. Это избавляет от необходимости вручную писать типы API каждый раз, когда изменяется спецификация, и держит клиент в синхронизации с тем, что на самом деле возвращает сервер.
Опции управляют формой выходных данных. Выберите объявления interface или type, и решите, как представляются поля с null: как необязательное свойство (x?: string) или как объединение с null (x: string | null). Ссылки $ref могут либо оставаться как именованные типы, указывающие на соответствующий интерфейс, либо быть развёрнутыми встроено везде, где они используются. Отключите "Генерировать типы пути, параметров и ответов", чтобы получить только схемы компонентов, или включите объединение кодов состояния, чтобы увидеть каждый код ответа, который может вернуть конечная точка, как единый тип. Описания из спецификации становятся JSDoc-комментариями выше каждого поля, а префикс имени защищает сгенерированные типы от столкновения с вашими собственными при вставке их в большой кодовой базе.
Парсер читает стандартные конструкции OpenAPI — схемы объектов и массивов, перечисления, oneOf/anyOf/allOf, nullable, additionalProperties — и следует локальным указателям $ref внутри одного документа. Конечные точки, отмеченные как устаревшие, можно полностью пропустить, а документ, который не похож на OpenAPI (нет раздела components/schemas или paths), выдаёт понятную ошибку вместо пустого выхода.
Всё выполняется локально в вашем браузере — ваша спецификация API, которая может описывать неопубликованный продукт или внутреннюю систему, никогда не загружается никуда. Скопируйте сгенерированные типы, загрузите их как файл .txt для вставки в файл .ts или отправьте выход напрямую обратно на вход, чтобы продолжить совершенствование.