Ir para o conteúdo
Totalmente local

Tipos OpenAPI para TypeScript

Converta um documento OpenAPI ou Swagger em interfaces e tipos TypeScript.

Entrada

Tipos OpenAPI para TypeScript

Cole um documento OpenAPI 3 ou Swagger 2 — JSON ou YAML — e esta ferramenta gera interfaces TypeScript correspondentes para cada esquema em components/schemas, mais um tipo por endpoint para seus parâmetros de caminho e consulta, corpo da solicitação e respostas. Economiza a etapa de escrever manualmente tipos de API sempre que uma especificação muda, mantendo o cliente sincronizado com o que o servidor realmente retorna.

As opções controlam a forma da saída. Escolha declarações de interface ou type, e decida como os campos anuláveis são representados: como uma propriedade opcional (x?: string) ou como uma união com null (x: string | null). Referências $ref podem permanecer como tipos nomeados apontando para a interface correspondente, ou ser expandidas em linha onde quer que sejam usadas. Desative "gerar tipos de caminho, parâmetro e resposta" para obter apenas os esquemas de componentes, ou ative uma união de código de estado para ver cada código de resposta que um endpoint pode retornar como um único tipo. Descrições da especificação se tornam comentários JSDoc acima de cada campo, e um prefixo de nome mantém os tipos gerados de colidirem com os seus próprios ao colá-los em uma base de código maior.

O analisador lê construções OpenAPI padrão — esquemas de objeto e matriz, enums, oneOf/anyOf/allOf, nullable, additionalProperties — e segue ponteiros $ref locais dentro do mesmo documento. Endpoints marcados como obsoletos podem ser ignorados completamente, e um documento que não pareça OpenAPI (sem seção components/schemas ou paths) produz um erro claro em vez de uma saída em branco.

Tudo é executado localmente no seu navegador — sua especificação de API, que pode descrever um produto não lançado ou um sistema interno, nunca é carregada em nenhum lugar. Copie os tipos gerados, baixe-os como um arquivo .txt para colar em um arquivo .ts, ou envie a saída diretamente de volta para a entrada para continuar refinando.

FAQ

Suporta tanto documentos OpenAPI 3 quanto Swagger 2?
Sim. Ambos usam a mesma estrutura de paths, e as definições do Swagger 2 são lidas da mesma forma que o OpenAPI 3 components/schemas.
O que acontece com referências $ref que apontam para fora do documento?
Apenas referências locais (começando com #/) são resolvidas. Um $ref para um arquivo externo é mantido como um tipo nomeado, mas não pode ser expandido, já que não há nada mais para ler dele.
Posso gerar tipos apenas para os endpoints, sem cada esquema de componente?
Esquemas de componentes são sempre gerados quando presentes, já que tipos de solicitação e resposta geralmente os referenciam. Desative tipos de caminho para ignorar tudo derivado de caminhos e manter apenas os esquemas.
Por que uma referência de esquema circular permanece como um tipo nomeado mesmo com "expandir" ativado?
Um esquema que faz referência a si mesmo, direta ou indiretamente através de outro esquema, não pode ser incorporado sem fazer loop infinitamente, então essa referência volta ao tipo nomeado enquanto o resto ainda se expande.
Minha especificação de API é carregada em algum lugar?
Não. Análise e geração de tipos são executadas inteiramente no seu navegador — seu documento nunca sai do seu dispositivo.