TS → Protobuf proto3
Automação de Esquemas de Microsserviços e RPC

Conversor de TypeScript Interface para Protocol Buffers proto3

Converta interfaces e tipos TypeScript em mensagens Protobuf 3 com tags numéricas sequenciais e enums.

Privacidade 100% no cliente
Zero transmissão ao servidor
Predefinições:
Opções do Compilador Protobuf 3 e Alocação de Tags
syntax = "proto3"•snake_case
TypeScript Interface / Tipos
syntax = "proto3";
package identity.v1;
Mensagens Proto0 mensagens (0 campos)
Enums0 enums analisados
Serviços gRPC0 Serviços gRPC (identity.v1)

Análise AST TypeScript 100% no Cliente

Zero envios para servidor ou transmissões para bancos de dados. Toda a extração de interfaces TypeScript, tokenização de tipos e compilação Protobuf ocorre na memória do navegador.

Alocação Inteligente de Tags Proto3 e Normalização

Numera tags de campos sequencialmente a partir de 1, converte identificadores para o formato snake_case e traduz tipos Record em mapas proto.

Geração de Serviços gRPC e Proto3 para Produção

Compila assinaturas de interfaces RPC do TypeScript em definições de serviço gRPC prontas para produção, mensagens de requisição/resposta e stubs.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor do Conversor de TypeScript Interface para Protocol Buffers proto3 — Guia de referência

Converta interfaces e tipos TypeScript em mensagens Protobuf 3 com tags numéricas sequenciais e enums.

Parâmetros principais e controles

Formato dos Nomes de CampoEnum (snake_case | camelCase | preserve)

Define a convenção de nomenclatura dos identificadores. Os guias de estilo do Google Protobuf recomendam lower_snake_case para campos de mensagens.

Padrão: snake_case
Tipo Numérico PadrãoEnum (int32 | int64 | double | float | uint32)

Define o tipo escalar do Protobuf para o qual o tipo primitivo genérico 'number' do TypeScript será mapeado.

Padrão: int32
Modo de Campos OpcionaisEnum (proto3_optional | implicit | wrappers)

Controla como propriedades opcionais do TypeScript (field?: type) são declaradas. 'proto3_optional' insere a palavra-chave explícita 'optional' para detecção de presença.

Padrão: proto3_optional
Nome do Pacote ProtoString

Define o namespace do pacote no início do arquivo .proto gerado para evitar colisões de nomes entre microsserviços.

Padrão: api.v1
Imports Automáticos de Tipos PadrãoBoolean

Detecta automaticamente tipos Date, unknown ou Record e injeta os imports correspondentes de google/protobuf/timestamp.proto ou struct.proto.

Padrão: true

Dicas profissionais e melhores práticas

Preservar Tags Numéricas Determinísticas

Em esquemas Protobuf de produção, nunca altere os números de tag (1, 2, 3...) de campos existentes. Adicione novos campos sempre com números sequenciais mais altos ao final ou use declarações reserved.

Mapeamento de Date para Timestamp

Propriedades Date do TypeScript são convertidas automaticamente para 'google.protobuf.Timestamp'. Certifique-se de que o compilador protoc tenha acesso aos Google Well-Known Types.

Tradução de Record e Dicionários

Assinaturas de índice como 'Record<string, T>' ou '{ [key: string]: T }' são mapeadas diretamente para campos 'map<string, T>' do Protobuf sem necessidade de mensagens intermediárias.

Tipos Union Discriminados como oneof

Uniões discriminadas do TypeScript (ex: type Event = A | B) devem ser estruturadas como blocos 'oneof' do Protobuf para assegurar exclusividade mútua e otimizar a serialização binária.

Problemas comuns e solução de problemas

Mapeamento ambíguo do tipo 'number' do TypeScript para escalares do Protobuf

Como 'number' representa inteiros e pontos flutuantes, ajuste a configuração 'Tipo Numérico Padrão' ou anote os campos com comentários JSDoc como /** @type {int64} */ ou /** @type {double} */.

Erro de importação ausente de google/protobuf/timestamp.proto na compilação do protoc

Certifique-se de que a opção 'Imports Automáticos de Tipos Padrão' esteja ativada e que o protoc ou buf consiga localizar o diretório oficial de Well-Known Types do Google.

Objetos anônimos embutidos em interfaces geram erros de sintaxe

O Protobuf exige mensagens com identificadores explícitos. Isole objetos anônimos (ex: { user: { id: string } }) em interfaces nomeadas dedicadas (ex: interface UserSummary) antes de efetuar a conversão.

Perguntas frequentes (FAQ)

Como arrays do TypeScript são convertidos para Protocol Buffers?▼

Arrays do TypeScript (T[] ou Array<T>) são convertidos usando a regra 'repeated' do proto3 (ex: 'repeated string tags = 3;'). Para escalares numéricos, o proto3 utiliza codificação compactada (packed) automaticamente.

Como o conversor gerencia campos opcionais (field?: type) no proto3?▼

No proto3, campos sem modificador assumem valores padrão e não possuem presença explícita. Com o modo 'proto3_optional', o conversor adiciona a palavra-chave 'optional' (suportada a partir do Protobuf v3.15+), criando blocos sintéticos oneof para detecção de presença.

É possível converter enums de string e numéricos do TypeScript para enums do proto3?▼

Sim. Os enums do TypeScript são traduzidos em definições 'enum' do proto3. Como o proto3 exige que o primeiro valor do enum seja 0, o conversor insere automaticamente a entrada UNSPECIFIED = 0 se necessário.

Meus códigos e interfaces TypeScript são enviados para servidores externos?▼

Não. A análise léxica AST, a tokenização e a geração do arquivo .proto ocorrem 100% localmente no motor JavaScript do seu navegador. Nenhum dado trafega pela rede.

Como funcionam a herança de interfaces (extends) e interseções de tipos?▼

Propriedades herdadas ('interface Child extends Parent') e interseções de tipos ('type Combined = A & B') são unificadas e organizadas dentro da mensagem Protobuf final com tags incrementais consecutivas.

Ferramentas e utilitários relacionados

Todas as ferramentas →