Aller au contenu
Tout en local

Schéma Protobuf en types TypeScript

Convertit un schéma Protobuf en interfaces TypeScript, enums et types union.

Entrée
Sortie

Schéma Protobuf en types TypeScript

Colle un schéma Protobuf et cet outil génère les types TypeScript correspondants : une interface par message, un enum par enum Protobuf, et un type union pour chaque oneof. Utilise-le quand un fichier .proto définit le format de fil d'une API et que tu veux un client type-safe sans exécuter la chaîne d'outils protoc complète.

Choisir proto2 ou proto3 pour contrôler la lecture des champs nus : proto3 maintient la présence implicite, gardant les champs scalaires et enum toujours présents tandis que les champs message restent optionnels ; proto2 lit plutôt les mots-clés required et optional explicites sur chaque champ. Les entiers 64 bits s'associent à une chaîne par défaut, car les nombres JavaScript perdent de la précision au-delà de 2^53 — désactive l'option pour utiliser number à la place. Les champs répétés deviennent des tableaux et les champs map<K, V> deviennent Record<K, V>. Un oneof s'effondre soit en un type union discriminé pour qu'un seul membre puisse être défini à la fois, soit s'aplatit en champs optionnels ordinaires. Les types imbriqués conservent leur imbrication dans les noms générés (Outer_Inner), les noms de champs peuvent rester en snake_case ou se convertir en camelCase, les commentaires se transmettent comme JSDoc, et l'activation de la génération de service ajoute une interface par service Protobuf avec chaque rpc typé pour les appels unaires ou en continu.

Le convertisseur est un analyseur écrit à la main, pas un wrapper autour de protoc : il couvre la forme quotidienne d'un schéma — messages, enums, oneofs, maps, types imbriqués et services — tout en omettant les options, extensions et déclarations de champs réservés dont il n'a pas besoin pour reproduire un type. Un point-virgule manquant ou une accolade non appariée produit une erreur claire indiquant à peu près où c'est arrivé.

Tout fonctionne localement dans ton navigateur ; ton schéma n'est jamais téléchargé, c'est donc sûr de coller des définitions d'API propriétaires. Copie le résultat, télécharge-le en tant que fichier .txt, ou renvoie-le à l'entrée pour affiner le schéma.

FAQ

Supporte-t-il proto2 et proto3 ?
Oui. Choisis l'option de syntaxe ou laisse-la telle quelle : un schéma qui commence par une ligne syntax = "proto2"; ou syntax = "proto3"; est lu du schéma lui-même et l'option n'agit que comme solution de secours quand cette ligne est absente.
Comment les champs entiers 64 bits sont-ils traités ?
int64, uint64, sint64, fixed64 et sfixed64 s'associent à string par défaut, car les nombres JavaScript ne peuvent pas représenter la plage complète de 64 bits avec précision. Désactive l'option "Entiers 64 bits en chaîne" pour les associer à number à la place.
Qu'advient-il d'un groupe oneof ?
Avec "Représenter oneof comme type union" activé, un oneof devient un type union discriminé TypeScript pour que seul un membre puisse être défini. Avec désactivé, chaque membre devient son propre champ optionnel.
Génère-t-il des types pour les services gRPC ?
Activeaz "Générer les types de méthodes de service" pour ajouter une interface TypeScript par service, avec chaque méthode rpc typée pour un appel unaire ou en continu avec AsyncIterable, correspondant aux mots-clés stream du schéma.
Mon schéma est-il téléchargé quelque part ?
Non. Le schéma est analysé et converti entièrement dans ton navigateur — rien n'est envoyé à un serveur, c'est donc sûr de coller une définition d'API interne ou non publiée.