Preskoči na vsebino
100% lokalno

Protobuf shema v vrste TypeScript

Pretvori Protobuf shemo v ustrezne vrste TypeScript vmesnikov, enum-ov in unij.

Vhod
Izhod

Protobuf shema v vrste TypeScript

Prilepi Protobuf shemo in to orodje generiše ustrezne vrste TypeScript: en vmesnik na sporočilo, eno oštevilčenje na Protobuf oštevilčenje in vrsto unije za vsak oneof. Uporabi ga, ko datoteka .proto definira oblikovanje podatkov API-ja in hočeš type-safe odjemalca brez izvajanja celotnega orodja protoc.

Izberi proto2 ali proto3, da nadziraš branje praznih polj: proto3 implicitna prisutnost ohrani enojne scalar in enum polja vedno prisotna, medtem ko se polja sporočil ostanejo izborna; proto2 namesto tega prebere izrecite ključne besede required in optional na vsakem polju. 64-bitna cela števila se privzeto preslikajo na niz, ker se številke JavaScript izgubijo preciznost nad 2^53 — izključi možnost za število namesto tega. Ponavljajoča se polja postanejo nizi in polja map<K, V> postanejo Record<K, V>. Oneof se bodisi zruši v razlikovano vrsto unije, tako da je lahko nastavljen samo en član, bodisi se razširi v navadna izborna polja. Ugniježđene vrste ohranijo svojo ugniježdenost v generiranih imenih (Outer_Inner), imena polj lahko ostanejo snake_case ali se pretvorijo v camelCase, komentarji se prenesejo kot JSDoc, in vključitev generiranja storitve doda en vmesnik na Protobuf storitev s konkretnima tipiziranim za enotne ali pretočne klice.

Pretvornik je ročno napisan analizator, ne ovoj okrog protoc: pokriva vsakodnevno obliko sheme — sporočila, oštevilčenja, oneofs, zemljevide, ugniježđene vrste in storitve — medtem ko preskoči možnosti, razširitve in rezervirane stavke polj, ki jih ne potrebujem za reprodukcijo vrste. Manjkajoči podpičaj ali neusklajeni oklepaj povzročita jasno napako, ki poimenuje približno, kje se je zgodilo.

Vse se izvaja lokalno v tvem brskaltniku; tvoja shema se nikoli ne naloži, zato je varno prilepiti lastne definicije API-ja. Kopiraj rezultat, prenesi kot datoteko .txt ali ga pošlji nazaj v vnos, da nadaljuješ z natančnitvijo sheme.

FAQ

Ali podpira tako proto2 kot proto3?
Ja. Izberi možnost sintakse ali jo pusti kot je: shema, ki se začne s sintakso = "proto2"; ali sintakso = "proto3"; vrstica se prebere iz same sheme in možnost deluje le kot fallback, ko ta vrstica manjka.
Kako se ravna s polji s 64-bitnimi celimi števili?
int64, uint64, sint64, fixed64 in sfixed64 se privzeto preslikajo na niz, ker številke JavaScript ne morejo natančno predstaviti polnega 64-bitnega obsega. Izključi "64-bitna cela števila kot nizi", da jih namesto tega preslikiš na število.
Kaj se zgodi s oneof skupino?
Z vključeno možnostjo "Predstavi oneof kot vrsto unije" se oneof spremeni v razlikovano TypeScript unijo, tako da je lahko nastavljen samo en član. Z izključitvijo postane vsak član svoje lastno izborno polje.
Ali generiše vrste za gRPC storitve?
Vključi "Generiraj vrste metod storitev", da dodaš en vmesnik TypeScript na storitev, z vsako metodo rpc tipizirana za enotni klic ali pretakanje s AsyncIterable, ujemajočo se s ključnimi besedami pretoka sheme.
Ali je moja shema naložena nekje?
Ne. Shema se razčleni in pretvori v celoti v tvojem brskalniku — nič se ne pošlje na strežnik, zato je varno prilepiti interno ali neobjavljeno definicijo API-ja.