Vai al contenuto
100% locale

Schema Protobuf a tipi TypeScript

Converti uno schema Protobuf in interfacce TypeScript, enum e tipi union.

Ingresso
Uscita

Schema Protobuf a tipi TypeScript

Incolla uno schema Protobuf e questo strumento genera i tipi TypeScript corrispondenti: un'interfaccia per messaggio, un enum per ogni enum Protobuf, e un tipo union per ogni oneof. Usalo quando un file .proto definisce il formato di trasmissione di un'API e vuoi un client type-safe senza eseguire l'intera catena di strumenti protoc.

Scegli proto2 o proto3 per controllare come vengono letti i campi nudi: proto3 mantiene la presenza implicita, mantenendo i campi scalari e enum sempre presenti mentre i campi messaggio rimangono facoltativi; proto2 invece legge le parole chiave required e optional esplicite su ogni campo. Gli interi a 64 bit si mappano a stringa per impostazione predefinita, poiché i numeri JavaScript perdono precisione oltre 2^53 — disattiva l'opzione per usare number invece. I campi ripetuti diventano array e i campi map<K, V> diventano Record<K, V>. Un oneof può collassare in un tipo union discriminato in modo che solo un membro possa essere impostato alla volta, o appiattirsi in campi facoltativi ordinari. I tipi annidati mantengono il loro nidamento nei nomi generati (Outer_Inner), i nomi dei campi possono rimanere in snake_case o convertirsi a camelCase, i commenti si mantengono come JSDoc, e attivando la generazione di servizi aggiunge un'interfaccia per servizio Protobuf con ogni rpc tipizzato per chiamate unarie o in streaming.

Il convertitore è un parser scritto a mano, non un wrapper intorno a protoc: copre la forma quotidiana di uno schema — messaggi, enum, oneof, map, tipi annidati e servizi — mentre salta opzioni, estensioni e dichiarazioni di campi riservati di cui non ha bisogno per riprodurre un tipo. Un punto e virgola mancante o una parentesi graffa non corrispondente produce un errore chiaro che indica approssimativamente dove è accaduto.

Tutto viene eseguito localmente nel tuo browser; il tuo schema non viene mai caricato, quindi è sicuro incollare definizioni di API proprietarie. Copia il risultato, scaricalo come file .txt, o rimandalo all'input per continuare a perfezionare lo schema.

FAQ

Supporta sia proto2 che proto3?
Sì. Scegli l'opzione di sintassi, o lasciala così: uno schema che inizia con una riga syntax = "proto2"; o syntax = "proto3"; viene letto dallo schema stesso e l'opzione agisce solo come fallback quando quella riga è assente.
Come vengono gestiti i campi interi a 64 bit?
int64, uint64, sint64, fixed64 e sfixed64 si mappano a stringa per impostazione predefinita, poiché i numeri JavaScript non possono rappresentare l'intera gamma a 64 bit con precisione. Disattiva l'opzione "Interi a 64 bit come stringa" per mapparli a number invece.
Cosa succede a un gruppo oneof?
Con "Rappresentare oneof come tipo union" attivato, un oneof diventa un tipo union discriminato TypeScript in modo che solo un membro possa essere impostato. Con disattivato, ogni membro diventa il suo proprio campo facoltativo.
Genera tipi per i servizi gRPC?
Attiva "Generare tipi di metodi di servizio" per aggiungere un'interfaccia TypeScript per servizio, con ogni metodo rpc tipizzato per una chiamata unaria o in streaming con AsyncIterable, corrispondendo alle parole chiave stream dello schema.
Il mio schema viene caricato da qualche parte?
No. Lo schema viene analizzato e convertito interamente nel tuo browser — nulla viene inviato a un server, quindi è sicuro incollare una definizione di API interna o non pubblicata.