Conversor de Protobuf .proto a Interfaces y Enums de TypeScript

Conversor de Protobuf .proto a Interfaces y Enums de TypeScript

Analiza definiciones de mensajes Protocol Buffers (proto2 y proto3), enums y campos anidados en interfaces TypeScript limpias.

Preajustes:
Esquema Protocol Buffers (.proto)
proto3
/**
 * Generated by ToolsAA Protobuf to TypeScript Converter
 * Syntax: proto3 | Package: identity.v1
 * 100% Client-Side Pure Execution
 */

export enum AccountStatus {
  ACCOUNT_STATUS_UNSPECIFIED = 0,
  ACCOUNT_STATUS_ACTIVE = 1,
  ACCOUNT_STATUS_PENDING_VERIFY = 2,
  ACCOUNT_STATUS_SUSPENDED = 3,
  ACCOUNT_STATUS_ARCHIVED = 4
}

export type UserProfileAuthCredential =
  | { case: 'passwordHash'; value: string }
  | { case: 'oauthProviderId'; value: string }
  | { case: 'webauthnPublicKey'; value: Uint8Array }
  | { case: undefined; value?: undefined };

export interface UserProfile {
  /** @field 6 */
  metadata: Record<string, string>;
  /** @field 1 */
  userId: string;
  /** @field 2 */
  email: string;
  /** @field 3 */
  displayName?: string;
  /** @field 4 */
  status?: AccountStatus;
  /** @field 5 */
  roles: string[];
  /** @field 7 */
  createdAt: string;
  /** @field 8 */
  lastLoginAt: string;
  /** @oneof auth_credential */
  authCredential?: UserProfileAuthCredential;
}

export interface GetUserRequest {
  /** @field 1 */
  userId: string;
}

export interface ListUsersRequest {
  /** @field 1 */
  pageSize: number;
  /** @field 2 */
  pageToken: string;
}

export interface UpdateUserRequest {
  /** @field 1 */
  user?: UserProfile;
}
Motor de Análisis AST Proto

Escáner léxico en el cliente compatible con proto2 y proto3 sin llamadas al servidor

Múltiples Formatos de Salida

Genera interfaces TypeScript, enums, uniones discriminadas y esquemas de validación Zod

Privacidad Total del Cliente

Procesamiento 100% en el navegador; sus esquemas corporativos jamás abandonan su equipo

Compilador AST Nativo Proto3 y Proto2

Transforma mensajes, enumeraciones, tipos anidados y paquetes en declaraciones TypeScript con máxima seguridad de tipos.

Cero Transmisión de Datos y Privacidad Total

La conversión 100% en el navegador garantiza que los esquemas gRPC y contratos empresariales jamás viajen a servidores remotos.

Generación de Código para Ecosistemas gRPC y Zod

Crea archivos .ts con números de campo JSDoc, enteros de 64 bits configurables y validadores Zod listos para producción.

Referencia técnica y guía de arquitectura

Guía de desarrollo del conversor de Protobuf .proto a Interfaces y Enums de TypeScript — Guía de referencia

Analiza definiciones de mensajes Protocol Buffers (proto2 y proto3), enums y campos anidados en interfaces TypeScript limpias.

Parámetros clave y controles

Convención de nombres (Field Casing)Enum (camelCase | snake_case | preserve)

Regla de nomenclatura para las propiedades de las interfaces TypeScript generadas. camelCase se alinea con el estilo canónico de TypeScript y el mapeo JSON de Google.

Por defecto: camelCase
Estilo de declaración (Declaration Style)Enum (interface | type)

Determina si los mensajes se emiten como declaraciones 'interface' o alias 'type' de TypeScript.

Por defecto: interface
Mapeo de enteros de 64 bits (64-Bit Integer Mapping)Enum (string | number | bigint)

Estrategia para tipos int64, uint64 y sint64 para evitar la pérdida de precisión IEEE 754 más allá de 2^53 - 1 en JavaScript.

Por defecto: string
Representación de Bytes (Bytes Representation)Enum (Uint8Array | string | Buffer)

Tipo de TypeScript asignado a los campos 'bytes' de Protobuf para navegadores y entornos Node.js.

Por defecto: Uint8Array
Estilo de generación de Enums (Enum Generation Style)Enum (enum | union | const_object)

Controla si los enums de Protobuf se convierten en enums numéricos de TypeScript, uniones literales de cadenas o constantes de objeto.

Por defecto: enum

Consejos profesionales y mejores prácticas

Uniones discriminadas para campos oneof

Los bloques 'oneof' de Protobuf se sintetizan en uniones discriminadas estrictas de TypeScript, lo que permite un estrechamiento exhaustivo de tipos en sentencias switch y bloquea combinaciones inválidas.

Transporte seguro de enteros de 64 bits

En navegadores web y pasarelas REST o gRPC-Web, mapee enteros de 64 bits a 'string' o 'bigint'. El tipo 'number' estándar de JavaScript trunca silenciosamente valores superiores a 9.007.199.254.740.991.

Aislamiento de mensajes anidados

Los mensajes declarados dentro de otros mensajes se generan como espacios de nombres o nombres de interfaz prefijados (por ejemplo, User_Address), evitando colisiones en el ámbito global.

Combine los tipos de TypeScript con

Combine los tipos de TypeScript con los esquemas Zod autogenerados para validar en tiempo de ejecución las cargas útiles JSON recibidas desde gRPC-Web o APIs REST.

Errores comunes y solución de problemas

Error de sintaxis: Falta el encabezado 'syntax = "proto3";' o 'syntax = "proto2";'

Añada una declaración de sintaxis explícita en la primera línea de su archivo .proto (por ejemplo, syntax = "proto3";). Se admiten comentarios antes de dicha línea.

Tipo personalizado o dependencia de mensaje no resuelta

Asegúrese de que todos los mensajes y enums referenciados estén definidos en el archivo o pertenezcan a los tipos conocidos estándar (como google.protobuf.Timestamp).

Etiquetas numéricas de campo duplicadas dentro de un mensaje

Protocol Buffers exige que cada campo dentro de un mensaje tenga una etiqueta entera positiva única (1 a 536.870.911, excluyendo el rango 19000-19999). Renumere los campos en conflicto.

Preguntas frecuentes (FAQ)

¿Cómo gestiona este conversor la sintaxis proto3 frente a proto2?▼

El analizador soporta ambas especificaciones. En proto3, los campos escalares son opcionales por defecto; en proto2, los modificadores 'required' y 'optional' se traducen fielmente a campos obligatorios u opcionales de TypeScript.

¿Cómo se representan google.protobuf.Timestamp y los Well-Known Types?▼

Los Well-Known Types estándar (como Timestamp, Duration y Struct) se transforman automáticamente en tipos idiomáticos de TypeScript (como string | Date para Timestamp o Record<string, unknown> para Struct).

¿Se pueden generar contratos de servicio gRPC para cliente y servidor?▼

Sí. Las definiciones de servicio con métodos rpc se analizan para producir interfaces TypeScript para métodos unarios, streaming de cliente, streaming de servidor y streaming bidireccional.

¿Se envía el código de mi esquema .proto a algún servidor externo?▼

No. El análisis léxico, la generación del AST y la emisión de código TypeScript se ejecutan al 100% en el motor JavaScript de su navegador de forma confidencial.

¿Cómo se transforman los campos 'repeated' y 'map' de Protobuf?▼

Los campos 'repeated' se convierten directamente en matrices (por ejemplo, string[]) y los campos 'map<string, T>' en registros tipados (Record<string, T>).

Herramientas y utilidades relacionadas

Todas las herramientas →
Guía para Desarrolladores: Generador de Documentación OpenAPI y Swagger a MarkdownDesarrollo

Convierta especificaciones OpenAPI 3.0 y Swagger 2.0 JSON/YAML en documentación de referencia Markdown limpia compatible con GitHub Flavored Markdown.

Abrir herramienta→
Guía de desarrollo del convertidor de GraphQL SDL a esquema de PrismaDesarrollo

Traduzca tipos de objetos, enumeraciones y directivas de GraphQL SDL a modelos limpios y relaciones del ORM Prisma.

Abrir herramienta→
Guía para desarrolladores: Generador de entidades TypeORM a partir de SQL DDL (Entidades TypeScript)Desarrollo

Convierta sentencias DDL SQL CREATE TABLE en clases de entidad TypeScript TypeORM limpias con decoradores @Column, @PrimaryGeneratedColumn, relaciones e índices.

Abrir herramienta→
Guía para Desarrolladores del Conversor de SQL CREATE TABLE DDL a Esquema ZodDesarrollo

Traduzca esquemas de tablas SQL, tipos de datos, restricciones y columnas anulables a esquemas de objetos Zod fuertemente tipados en TypeScript.

Abrir herramienta→
Conversor de Docker Compose a Manifiestos de Kubernetes (Compose a K8s)Desarrollo

Convierte servicios, variables de entorno, puertos y volúmenes de docker-compose.yml en YAML de Kubernetes Deployment y Service.

Abrir herramienta→
Guía de Desarrollo del Conversor de JSON a Variables de Entorno .env (Aplanar y Exportar)Desarrollo

Aplana cargas útiles JSON anidadas en configuraciones .env en mayúsculas SNAKE_CASE con delimitadores y prefijos personalizables.

Abrir herramienta→