Protobuf-Schema in TypeScript-Typen
Konvertieren Sie ein Protobuf-Schema in entsprechende TypeScript-Schnittstellen, Enums und Union-Typen.
Protobuf-Schema in TypeScript-Typen
Fügen Sie ein Protobuf-Schema ein, und dieses Tool generiert die entsprechenden TypeScript-Typen: eine Schnittstelle pro Nachricht, ein Enum pro Protobuf-Enum und einen Union-Typ für jedes Oneof. Verwenden Sie es, wenn eine .proto-Datei das Drahtformat einer API definiert und Sie einen typsicheren Client ohne vollständigen protoc-Toolchain wünschen.
Wählen Sie proto2 oder proto3, um zu steuern, wie nackte Felder gelesen werden: proto3 mit impliziter Präsenz behält einzelne Skalar- und Enum-Felder immer vorhanden, während nachrichtengefüllte Felder optional bleiben; proto2 liest stattdessen das explizite erforderliche und optionale Schlüsselwort auf jedem Feld. 64-Bit-Ganzzahlen werden standardmäßig auf String abgebildet, da JavaScript-Nummern die Genauigkeit über 2^53 verlieren – deaktivieren Sie die Option, um stattdessen auf Nummer zu setzen. Wiederholte Felder werden zu Arrays und map<K, V>-Felder werden zu Record<K, V>. Ein Oneof bricht entweder zu einem diskriminierten Union-Typ zusammen, sodass nur ein Element gesetzt werden kann, oder wird zu gewöhnlichen optionalen Feldern abgeflacht. Verschachtelte Typen behälten ihre Verschachtelung in den generierten Namen (Outer_Inner), Feldnamen können snake_case bleiben oder zu camelCase konvertiert werden, Kommentare werden als JSDoc übertragen, und das Aktivieren der Service-Generierung fügt eine Schnittstelle pro Protobuf-Service mit jeder RPC-Typ für unäre oder Streaming-Aufrufe hinzu.
Der Konverter ist ein handgeschriebener Parser, kein Wrapper um protoc: Er deckt die alltägliche Form eines Schemas ab – Nachrichten, Enums, Oneofs, Maps, verschachtelte Typen und Services – während er Optionen, Erweiterungen und reservierte Feldanweisungen überspring, die er nicht benötigt, um einen Typ zu reproduzieren. Ein fehlender Punkt- komma oder eine nicht abgestimmte Klammer erzeugt einen klaren Fehler, der grob angibt, wo es passiert ist.
Alles läuft lokal in Ihrem Browser; Ihr Schema wird niemals hochgeladen, daher ist es sicher, proprietäre API-Definitionen einzufügen. Kopieren Sie das Ergebnis, laden Sie es als .txt-Datei herunter, oder senden Sie es zurück in die Eingabe, um das Schema weiter zu verfeinern.