Наиболее полно эта штука себя раскрывает, если соблюдать следующие правила:
- openapi-typescript $INPUT -o $OUTPUT --root-types --root-types-no-schema-prefix - флаги достают наружу заявленные типы и убирают у них префикс Schema
- Есть в openapi стандарте такое свойство, как operationId - уникальный идентификатор операции. Генератор типов его учитывает и к ним можно обращаться не по url, а по этому имени. В итоге, даже если роут потом изменится - типы не "переедут"
- В результате работы генерируются типы следующего вида: paths["/my/endpoint"]["get"]["responses"][200]["content"]["application/json"]["schema"]; Естественно, работать с ними тяжело. Либо создаем отдельный файл, где делаем перебор: type SuccessResponse = paths["/my/endpoint"]["get"]["responses"][200]["content"]["application/json"]["schema"]; Рекомендую написать скрипт, который вот эти типовые куски, типа 200, content, json просто выкинет и сгенерит рядом еще один d.ts