Convertisseur Protobuf .proto vers Interfaces et Enums TypeScript

Convertisseur Protobuf .proto vers Interfaces et Enums TypeScript

Analysez les définitions de messages Protocol Buffers (proto2 et proto3), enums et champs imbriqués en interfaces TypeScript propres.

Préréglages :
Schéma 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;
}
Moteur d'Analyse AST Proto

Analyseur lexical dans le navigateur prenant en charge proto2 et proto3 sans appel serveur

Modes de Sérialisation Multiples

Produit des interfaces TypeScript, énumérations, unions discriminées et schémas de validation Zod

Bouclier de Confidentialité Client

Traitement 100% local dans le navigateur ; vos schémas propriétaires ne quittent jamais votre poste

Compilateur AST Natif Proto3 et Proto2

Transforme les messages, énumérations, types imbriqués et espaces de noms en déclarations TypeScript rigoureuses.

Zéro Transmission de Données & Confidentialité

L'exécution intégrale dans le navigateur garantit que vos schémas gRPC d'entreprise ne transitent jamais sur le réseau.

Génération de Code pour l'Écosystème gRPC & Zod

Génère des fichiers .ts prêts à l'emploi avec numéros de champ JSDoc, entiers 64 bits paramétrables et validateurs Zod.

Référence technique et guide d'architecture

Guide de développement du convertisseur Protobuf .proto vers Interfaces et Enums TypeScript — Guide de référence

Analysez les définitions de messages Protocol Buffers (proto2 et proto3), enums et champs imbriqués en interfaces TypeScript propres.

Paramètres clés et contrôles

Casse des champs (Field Casing)Enum (camelCase | snake_case | preserve)

Convention de nommage pour les propriétés des interfaces TypeScript générées. camelCase respecte le style canonique de TypeScript et les spécifications officielles de mappage JSON de Google.

Par défaut : camelCase
Style de déclaration (Declaration Style)Enum (interface | type)

Définit si les types de messages sont générés sous forme de déclarations 'interface' ou d'alias 'type' TypeScript.

Par défaut : interface
Mappage des entiers 64 bits (64-Bit Integer Mapping)Enum (string | number | bigint)

Stratégie pour les types int64, uint64 et sint64 afin d'éviter la perte de précision IEEE 754 au-delà de 2^53 - 1 en JavaScript.

Par défaut : string
Représentation des octets (Bytes Representation)Enum (Uint8Array | string | Buffer)

Mappage de type TypeScript pour les champs 'bytes' de Protobuf dans les environnements de navigateur et Node.js.

Par défaut : Uint8Array
Style de génération des énumérations (Enum Generation Style)Enum (enum | union | const_object)

Détermine si les enums Protobuf sont convertis en énumérations numériques TypeScript, en types d'union de chaînes littérales ou en objets const.

Par défaut : enum

Conseils de pro et bonnes practices

Les blocs 'oneof' de Protobuf sont

Les blocs 'oneof' de Protobuf sont traduits en unions discriminées strictes dans TypeScript, facilitant le filtrage exhaustif de types dans les instructions switch et éliminant les conflits d'état.

Transport sécurisé des entiers 64 bits

Dans les navigateurs et passerelles REST / gRPC-Web, associez les entiers 64 bits à 'string' ou 'bigint'. Le type 'number' de JavaScript tronque silencieusement les valeurs supérieures à 9 007 199 254 740 991.

Isolation des messages imbriqués

Les messages déclarés à l'intérieur d'autres messages sont générés sous forme d'espaces de noms ou d'interfaces préfixées (ex. : User_Address), évitant toute pollution de l'espace global.

Associez les définitions TypeScript

Associez les définitions TypeScript aux schémas Zod générés pour valider à l'exécution les charges utiles JSON non fiables provenant d'appels gRPC-Web ou REST.

Pièges courants et dépannage

Erreur de syntaxe : En-tête 'syntax = "proto3";' ou 'syntax = "proto2";' manquant

Ajoutez une déclaration explicite au tout début de votre fichier .proto (ex. : syntax = "proto3";). Les commentaires avant la déclaration sont autorisés.

Type personnalisé ou dépendance de message non résolue

Vérifiez que tous les messages et énumérations référencés sont déclarés dans le fichier ou correspondent aux types standard bien connus (tels que google.protobuf.Timestamp).

Numéros de champs (tags) en double dans le message

Dans Protocol Buffers, chaque champ d'un message doit comporter un index numérique positif unique (de 1 à 536 870 911, hors plage réservée 19000-19999). Corrigez les numéros en double.

Foire aux questions (FAQ)

Comment ce convertisseur gère-t-il les différences entre proto3 et proto2 ?▼

L'analyseur prend en charge les deux syntaxes. En proto3, les champs scalaires sont optionnels par défaut sans présence de champ explicite ; en proto2, les modificateurs 'required' et 'optional' sont fidèlement traduits en propriétés TypeScript obligatoires ou optionnelles.

Comment sont représentés google.protobuf.Timestamp et les Well-Known Types ?▼

Les types standard de Google (Timestamp, Duration, Struct, Any, etc.) sont automatiquement convertis en types TypeScript idiomatiques (ex. : string | Date pour Timestamp ou Record<string, unknown> pour Struct).

Peut-on générer les signatures de services gRPC pour clients et serveurs ?▼

Oui. Les définitions de service avec méthodes rpc produisent des contrats d'interface TypeScript pour les appels unaires ainsi que les flux clients, serveurs et bidirectionnels compatibles avec gRPC et Connect-Web.

Mon schéma .proto confidentiel est-il transmis à un serveur distant ?▼

Non. L'analyse lexicale, l'arbre syntaxique (AST) et la génération du code TypeScript s'effectuent à 100 % localement dans le moteur JavaScript de votre navigateur. Aucune donnée n'est transmise sur le réseau.

Comment les champs 'repeated' et 'map' sont-ils convertis en TypeScript ?▼

Les champs 'repeated' sont convertis directement en tableaux typés (ex. : string[]) et les champs 'map<string, T>' en dictionnaires typés (Record<string, T>).

Outils et utilitaires connexes

Tous les outils →
Guide Développeur : Générateur de Documentation API OpenAPI & Swagger vers MarkdownDéveloppement

Convertissez les spécifications OpenAPI 3.0 et Swagger 2.0 JSON/YAML en documentation de référence GitHub Flavored Markdown claire et professionnelle.

Ouvrir l'outil→
Guide développeur du convertisseur GraphQL SDL vers schéma PrismaDéveloppement

Convertissez les types d'objets, énumérations et directives du langage SDL GraphQL en modèles et relations Prisma ORM propres et optimisés.

Ouvrir l'outil→
Guide Développeur : Générateur d'entités TypeORM à partir de DDL SQL (Entités TypeScript)Développement

Convertissez vos instructions SQL CREATE TABLE DDL en classes d'entités TypeScript TypeORM propres avec @Column, @PrimaryGeneratedColumn, relations et index.

Ouvrir l'outil→
Guide du Développeur pour le Convertisseur SQL CREATE TABLE DDL vers Schéma ZodDéveloppement

Traduisez les schémas de tables SQL, types de données, contraintes et colonnes nullables en schémas d'objets Zod fortement typés pour TypeScript.

Ouvrir l'outil→
Convertisseur Docker Compose vers Manifestes Kubernetes (Compose vers K8s) - Guide DéveloppeurDéveloppement

Convertissez les services, variables d'environnement, ports et montages de volumes docker-compose.yml en manifestes YAML Kubernetes Deployment et Service.

Ouvrir l'outil→
Guide du Développeur : Convertisseur JSON en Variables d'Environnement .env (Aplatir & Exporter)Développement

Aplatissez les charges utiles JSON imbriquées en configurations .env en SNAKE_CASE majuscule avec délimiteurs et préfixes personnalisables.

Ouvrir l'outil→