Ir para o conteúdo
Totalmente local

Esquema Protobuf para tipos TypeScript

Transforme um esquema Protobuf em interfaces, enumerações e tipos união TypeScript correspondentes.

Entrada

Esquema Protobuf para tipos TypeScript

Cole um esquema Protobuf e esta ferramenta gera os tipos TypeScript correspondentes: uma interface por mensagem, uma enumeração por enumeração Protobuf e um tipo união para cada oneof. Use quando um ficheiro .proto define o formato de transmissão de uma API e pretende um cliente type-safe sem executar a cadeia de ferramentas completa do protoc.

Escolha proto2 ou proto3 para controlar como os campos são lidos: proto3 com presença implícita mantém os campos escalares singulares e de enumeração sempre presentes, enquanto os campos de tipos de mensagem permanecem opcionais; proto2 lê a palavra-chave required ou optional explícita em cada campo. Inteiros de 64 bits mapeiam para string por padrão, pois números JavaScript perdem precisão acima de 2^53 — desative a opção para usar number em seu lugar. Os campos repetidos tornam-se arrays e os campos map<K, V> tornam-se Record<K, V>. Um oneof ou se transforma num tipo união discriminado, de forma que apenas um membro pode estar definido de cada vez, ou se achata em campos opcionais ordinários. Os tipos aninhados mantêm o seu aninhamento nos nomes gerados (Outer_Inner), os nomes de campos podem permanecer snake_case ou converter para camelCase, os comentários são transportados como JSDoc e ativar a geração de serviço adiciona uma interface por serviço Protobuf com cada rpc digitado para chamadas uniárias ou de streaming.

O conversor é um analisador escrito à mão, não um invólucro em torno do protoc: cobre a forma quotidiana de um esquema — mensagens, enumerações, oneofs, maps, tipos aninhados e serviços — enquanto ignora opções, extensões e instruções de campos reservados que não precisa reproduzir um tipo. Um ponto e vírgula em falta ou uma chaveta sem correspondência produz um erro claro indicando aproximadamente onde ocorreu.

Tudo é executado localmente no seu navegador; o seu esquema nunca é enviado, portanto é seguro colar definições de API proprietárias. Copie o resultado, descarregue como ficheiro .txt ou envie-o de volta para a entrada para continuar a refinar o esquema.

FAQ

Suporta tanto proto2 como proto3?
Sim. Escolha a opção de sintaxe ou deixe como está: um esquema que começa com uma linha syntax = "proto2"; ou syntax = "proto3"; é lido do próprio esquema e a opção apenas actua como alternativa quando essa linha falta.
Como são tratados os campos de inteiros de 64 bits?
int64, uint64, sint64, fixed64 e sfixed64 mapeiam para string por padrão, porque números JavaScript não conseguem representar o intervalo completo de 64 bits com precisão. Desative "Inteiros de 64 bits como string" para mapeá-los para number em seu lugar.
O que acontece a um grupo oneof?
Com "Representar oneof como tipo união" ativado, um oneof torna-se uma união TypeScript discriminada, de modo que apenas um membro pode ser definido. Com a opção desativada, cada membro torna-se seu próprio campo opcional.
Gera tipos para serviços gRPC?
Ative "Gerar tipos de métodos de serviço" para adicionar uma interface TypeScript por serviço, com cada método rpc digitado para uma chamada uniária ou de streaming com AsyncIterable, correspondendo aos seus palavras-chave stream.
O meu esquema é enviado para algum lugar?
Não. O esquema é analisado e convertido inteiramente no seu navegador — nada é enviado para um servidor, portanto é seguro colar uma definição de API interna ou não lançada.