Preskoči na sadržaj
100% lokalno

Protobuf shema u TypeScript tipove

Pretvori Protobuf shemu u odgovarajuće TypeScript sučelja, nabrajanja i unije.

Unos
Rezultat

Protobuf shema u TypeScript tipove

Zalijepi Protobuf shemu i ovaj alat generiše odgovarajuće TypeScript tipove: jedno sučelje po poruci, jedno nabrajanje po Protobuf nabrajanju, i union tip za svaki oneof. Koristi ga kada .proto datoteka definiše format podataka API-ja i želiš type-safe klijenta bez pokretanja cijelog protoc alata.

Odaberi proto2 ili proto3 kako kontrolirati očitavanje obih polja: proto3 implicitna prisutnost čuva singular scalar i enum polja uvijek prisutna dok message polja ostaju izbjeglna; proto2 umjesto toga čita eksplicitan required i optional ključ na svakom polju. 64-bitni cijeli brojevi se mapiraju na string zadano, jer JavaScript brojevi gube preciznost iznad 2^53 — isključi opciju za number umjesto toga. Ponovljena polja postaju nizi i map<K, V> polja postaju Record<K, V>. Oneof se ili sažima u discriminated union tip tako da samo jedan član može biti postavljen, ili se rasplinjuje u obična izbjeglna polja. Ugniježđeni tipovi čuvaju svoje ugniježđenje u generiranim nazivima (Outer_Inner), imena polja mogu ostati snake_case ili se konvertirati u camelCase, komentari se prenose kao JSDoc, i uključivanje generiranja servisa dodaje jedno sučelje po Protobuf servisu s svakim rpc tipiziranim za unary ili streaming pozive.

Konvertor je ručno napisan parser, ne omot oko protoc: pokriva svakodnevni oblik sheme — poruke, nabrajanja, oneofs, mape, ugniježđene tipove i servise — dok preskače opcije, proširenja i reserved-field iskaze koje ne trebam reproducirati tip. Nedostajući točka-zarez ili neupareni zavoj proizvode jasan error koji se navodi otprilike gdje se dogodio.

Sve se izvršava lokalno u tvom pregledniku; tvoja shema se nikad ne učitava, pa je sigurno zalijepiti vlastite API definicije. Kopiraj rezultat, preuzmi kao .txt datoteku, ili ga pošalji natrag u unos da nastaviš usavršavati shemu.

FAQ

Podržava li i proto2 i proto3?
Da. Odaberi opciju sintakse, ili ostavi kako jest: shema koja počinje s linijom syntax = "proto2"; ili syntax = "proto3"; se čita iz same sheme i opcija samo djeluje kao fallback kada ta linija nedostaje.
Kako se rukuju polja s 64-bitnim cijelim brojevima?
int64, uint64, sint64, fixed64 i sfixed64 se mapiraju na string zadano, jer JavaScript brojevi ne mogu predstaviti potpuni 64-bitni raspon precizno. Isključi "64-bitni cijeli brojevi kao stringovi" da ih umjesto toga mapiraš na number.
Što se događa s oneof grupom?
S uključenom "Predstavi oneof kao union tip" opcijom, oneof postaje discriminated TypeScript union tako da samo jedan član može biti postavljen. S njom isključenom, svaki član postaje svoje vlastito izbjeglno polje.
Generiše li tipove za gRPC servise?
Uključi "Generiraj tipove metoda servisa" da dodaš jedno TypeScript sučelje po servisu, s svakom rpc metodom tipiziranom za unary poziv ili streaming s AsyncIterable, usklađene sa stream ključnim riječima sheme.
Je li moja shema učitana negdje?
Ne. Shema se parsira i konvertira potpuno u tvom pregledniku — ništa se ne šalje na server, pa je sigurno zalijepiti internu ili neobjavljenu API definiciju.