Protobuf .proto zu TypeScript Interfaces & Enums Konverter

Protobuf .proto zu TypeScript Interfaces & Enums Konverter

Parst Protocol Buffers (proto2 & proto3) Nachrichtendefinitionen, Enums und verschachtelte Felder in saubere TypeScript-Interfaces.

Voreinstellungen:
Protocol Buffers (.proto) Schema
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;
}
Proto-AST-Parsing-Engine

Clientseitiger lexikalischer Scanner für proto2 und proto3 Syntaxbäume ohne Server-Roundtrips

Duale Serialisierungsmodi

Gibt TypeScript-Interfaces, Enums, diskriminierte Unions und Zod-Validierungsschemas aus

100% Datenschutz

Vollständig browserbasierte Auswertung; proprietäre Schemas verlassen niemals Ihr Gerät

Nativer Proto3 & Proto2 AST-Compiler

Wandelt Nachrichten, Enums, verschachtelte Typen und Namensräume in typsichere TypeScript-Deklarationen um.

Keine Datenübertragung & Maximale Sicherheit

100% clientseitige Konvertierung garantiert, dass proprietäre gRPC-Verträge niemals externe Server berühren.

Produktionsreife Codegenerierung für gRPC & Zod

Erzeugt einsatzbereite .ts-Dateien mit JSDoc-Feldnummern, anpassbaren 64-Bit-Ganzzahlen und Zod-Validatoren.

Technische Referenz & Architektur-Leitfaden

Protobuf .proto zu TypeScript-Schnittstellen und Enums Konverter-Leitfaden — Referenz-Leitfaden

Parst Protocol Buffers (proto2 & proto3) Nachrichtendefinitionen, Enums und verschachtelte Felder in saubere TypeScript-Interfaces.

Wichtige Parameter & Steuerelemente

Feld-Schreibweise (Field Casing)Enum (camelCase | snake_case | preserve)

Benennungskonvention für generierte TypeScript-Eigenschaften. camelCase folgt idiomatischen TypeScript-Standards und der offiziellen Google-JSON-Spezifikation.

Standard: camelCase
Deklarationsstil (Declaration Style)Enum (interface | type)

Legt fest, ob Nachrichtentypen als TypeScript-'interface'-Deklarationen oder als 'type'-Aliase generiert werden.

Standard: interface
64-Bit-Ganzzahl-Mapping (64-Bit Integer Mapping)Enum (string | number | bigint)

Strategie für int64-, uint64- und sint64-Typen zur Vermeidung von IEEE-754-Präzisionsverlusten oberhalb von 2^53 - 1 in JavaScript.

Standard: string
Bytes-Darstellung (Bytes Representation)Enum (Uint8Array | string | Buffer)

TypeScript-Typzuordnung für Protobuf-'bytes'-Felder in Browser- und Node.js-Laufzeitumgebungen.

Standard: Uint8Array
Enum-Generierungsstil (Enum Generation Style)Enum (enum | union | const_object)

Steuert, ob Protobuf-Enums in TypeScript-Zahlen-Enums, String-Literal-Union-Typen oder Const-Objekte umgewandelt werden.

Standard: enum

Profi-Tipps & Best Practices

Protobuf-'oneof'-Blöcke werden in

Protobuf-'oneof'-Blöcke werden in strikte diskriminierte TypeScript-Unions transformiert. Dies ermöglicht eine erschöpfende Typ-Eingrenzung in switch-Anweisungen und verhindert widersprüchliche Felder.

Bilden Sie 64-Bit-Ganzzahlen

Bilden Sie 64-Bit-Ganzzahlen (int64/uint64) in REST- und gRPC-Web-APIs auf 'string' oder nativer 'bigint' ab. Der standardmäßige JavaScript-Typ 'number' schneidet Werte über 9.007.199.254.740.991 stillschweigend ab.

Verschachtelte Nachrichtendefinitionen

Verschachtelte Nachrichtendefinitionen werden als isolierte Namensräume oder Schnittstellen mit Präfix (z. B. User_Address) exportiert, wodurch Namenskonflikte im globalen Scope vermieden werden.

Laufzeitvalidierung mit Zod-Schemas

Kombinieren Sie die generierten TypeScript-Typen mit den optional erzeugten Zod-Schemas, um eingehende JSON-Nutzdaten an gRPC-Web- und REST-Endpunkten zur Laufzeit abzusichern.

Häufige Fallstricke & Fehlerbehebung

Syntaxfehler: Fehlender Header 'syntax = "proto3";' oder 'syntax = "proto2";'

Fügen Sie ganz oben in Ihrer .proto-Datei eine explizite Syntax-Deklaration ein (z. B. syntax = "proto3";). Kommentare vor der Zeile sind zulässig.

Nicht aufgelöste benutzerdefinierte Typen oder Abhängigkeiten

Stellen Sie sicher, dass alle referenzierten Nachrichten- und Enum-Typen in der Datei definiert sind oder standardmäßige Well-Known Types (wie google.protobuf.Timestamp) darstellen.

Doppelte Feldnummern-Tags innerhalb einer Nachricht erkannt

In Protocol Buffers muss jedes Feld innerhalb einer Nachricht eine eindeutige positive Ganzzahl (1 bis 536.870.911, ausgenommen reservierte Bereiche 19000-19999) als Tag besitzen. Passen Sie kollidierende Nummern an.

Häufig gestellte Fragen (FAQ)

Wie geht der Konverter mit proto3 im Vergleich zu proto2 um?▼

Beide Spezifikationen werden vollständig unterstützt. In proto3 sind Skalarfelder standardmäßig optional ohne Feldpräsenz; in proto2 werden 'required'- und 'optional'-Schlüsselwörter exakt in TypeScript-Optionen abgebildet.

Wie werden google.protobuf.Timestamp und Well-Known Types abgebildet?▼

Google Well-Known Types wie Timestamp, Duration und Struct werden automatisch auf idiomatische TypeScript-Typen abgebildet (z. B. string | Date für Zeitstempel oder Record<string, unknown> für Struct).

Können gRPC-Dienstschnittstellen für Clients und Server generiert werden?▼

Ja. Service-Definitionen mit rpc-Methoden werden in TypeScript-Schnittstellen für unäre Aufrufe, Client-, Server- und bidirektionale Streams für moderne gRPC- und Connect-Web-Clients übersetzt.

Werden meine vertraulichen .proto-Dateien an einen Server übertragen?▼

Nein. Das Parsing, die AST-Generierung und die TypeScript-Kompilierung laufen zu 100 % lokal in der JavaScript-Engine Ihres Browsers. Es erfolgt keinerlei Netzwerkübertragung.

Wie werden 'repeated'- und 'map'-Felder konvertiert?▼

'repeated'-Felder werden direkt in Arrays (z. B. string[]) übersetzt und 'map<string, T>'-Felder in typisierte Wörterbücher (Record<string, T>).

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →