Hoppa till innehåll
100% lokalt

Protobuf-schema till TypeScript-typer

Konvertera ett Protobuf-schema till motsvarande TypeScript-gränssnitt, uppräkningar och union-typer.

Inmatning
Utmatning

Protobuf-schema till TypeScript-typer

Klistra in ett Protobuf-schema så genererar det här verktyget motsvarande TypeScript-typer: ett gränssnitt per meddelande, en uppräkning per Protobuf-uppräkning och en union-typ för varje oneof. Använd det när en .proto-fil definierar en API:s trådformat och du vill ha en typesäker klient utan att köra den fullständiga protoc-verktygslådan.

Välj proto2 eller proto3 för att styra hur nakna fält läses: proto3 med implicit närvaro håller enkla skalar- och enum-fält alltid närvarande medan meddelande-ifyllda fält förblir valfria; proto2 läser istället de explicita obligatoriska och valfria nyckelorden på varje fält. 64-bitars heltal mappas till sträng som standard, eftersom JavaScript-tal förlorar noggrannhet över 2^53 – slå av alternativet för att mappas till tal istället. Upprepade fält blir matriser och map<K, V>-fält blir Record<K, V>. En oneof kollapsas antingen till en diskriminerad union-typ så att endast en medlem kan ställas in, eller plattas ut till vanliga valfria fält. Kapslade typer behåller sin kapslande i de genererade namnen (Outer_Inner), fältnamnen kan förbli snake_case eller konverteras till camelCase, kommentarer överförs som JSDoc, och aktivering av tjänstgenerering lägger till ett gränssnitt per Protobuf-tjänst med varje rpc skriven för unär eller strömmande samtal.

Konverteraren är en handskriven parser, inte en omslutning runt protoc: den täcker den dagliga formen av ett schema – meddelanden, uppräkningar, oneofs, kartor, kapslade typer och tjänster – medan den hoppar över alternativ, tillägg och reserverade fältdeklarationer som den inte behöver för att återge en typ. Ett saknat semikolon eller en omatchad parentes producerar ett tydligt fel som namnger ungefär var det hände.

Allt körs lokalt i din webbläsare; ditt schema laddas aldrig upp, så det är säkert att klistra in egna API-definitioner. Kopiera resultatet, ladda ned det som en .txt-fil, eller skicka det tillbaka till inmatningen för att fortsätta förfina schemat.

FAQ

Stöder den både proto2 och proto3?
Ja. Välj syntaxalternativet, eller lämna det som det är: ett schema som börjar med en syntax = "proto2"; eller syntax = "proto3"; raden läses från schemat själv och alternativet fungerar bara som en reserv när den raden saknas.
Hur hanteras 64-bitars heltalsfält?
int64, uint64, sint64, fixed64 och sfixed64 mappas till sträng som standard, eftersom JavaScript-tal inte kan representera det fullständiga 64-bitars intervallet noggrant över 2^53. Slå av alternativet "64-bitars heltal som sträng" för att mappa dem till tal istället.
Vad händer med en oneof-grupp?
Med "Representera oneof som union-typ" på, blir en oneof en diskriminerad TypeScript-union så att endast en medlem kan ställas in. Med det av blir varje medlem sitt eget valfria fält.
Genererar det typer för gRPC-tjänster?
Slå på "Generera servicemetodtyper" för att lägga till ett TypeScript-gränssnitt per tjänst, med varje rpc-metod skriven för ett unärt samtal eller strömning med AsyncIterable, som matchar schemat's stream-nyckelord.
Laddas mitt schema upp någonstans?
Nej. Schemat parsas och konverteras helt i din webbläsare – ingenting skickas till en server, så det är säkert att klistra in interna eller ej utgivna API-definitioner.