Ugrás a tartalomhoz
100% helyi

Protobuf séma TypeScript típusokra

Protobuf sémát TypeScript interfészekre, enumokra és unióra konvertálása.

Bemenet
Kimenet

Protobuf séma TypeScript típusokra

Illessz be egy Protobuf sémát, és ez az eszköz előállítja a megfelelő TypeScript típusokat: egy interfész minden üzenethez, egy enum minden Protobuf enumhoz, és egy union típus minden oneofhoz. Akkor használd, amikor egy .proto fájl egy API drótformátumát határozza meg, és biztonságos típusú klienst akarsz a teljes protoc eszközlánc futtatása nélkül.

Válaszd ki a proto2 vagy proto3 szintaxist az egyszerű mezők olvasásának szabályozásához: proto3 implicit jelenlét megtartja az egyedülálló skaláris és enum mezőket mindig jelenlévőnek, míg az üzenet típusú mezők opcionálisak maradnak; proto2 helyette beolvassa az explicit required és optional kulcsszót minden mezőn. A 64 bites egészek alapértelmezés szerint stringre képeződnek, mivel a JavaScript számok 2^53 felett veszítik a pontosságukat – kapcsold ki az opciót a number-hez. Az ismételt mezők tömbökké, a map<K, V> mezők pedig Record<K, V>-vé válnak. Egy oneof vagy egy diszkriminált union típusra összecsukódik, így csak egy tag lehet beállítva, vagy lapítva az közönséges opcionális mezőkké. A beágyazott típusok megőrzik a beágyazottságukat a generált nevekben (Outer_Inner), a mezőneveket snake_case-ben lehet tartani vagy camelCase-re konvertálni, megjegyzések JSDoc formában átkerülnek, és a szolgáltatás generálásának bekapcsolása egy interfészt ad minden Protobuf szolgáltatáshoz, minden rpc típusú unáris vagy streamelő hívások számára.

Az átalakító egy kézzel írott elemző, nem a protoc körüli burkolat: a séma hétköznapi alakját fedi le – üzeneteket, enumokat, oneofokat, térképeket, beágyazott típusokat és szolgáltatásokat – miközben kihagyja az opciókat, kiterjesztéseket és fenntartott mező utasításokat, amelyeket nem kell reprodukálnia. A hiányzó pontosvessző vagy egy nem párosított kapcsos zárójel világos hibát hoz létre, amely megnevezi, hol történt.

Minden helyileg fut a böngészőben; a séma soha nem töltődik fel, így biztonságosan beilleszthetsz proprietary API definíciókat. Másold a szöveget, töltsd le .txt fájlként, vagy küldd vissza a bemenetre, hogy folytasd a séma finomítását.

Gyakori kérdések

Támogatja a proto2 és proto3 szintaxist?
Igen. Válaszd ki a szintaxis opciót, vagy hagyj üresen: egy such = "proto2"; vagy syntax = "proto3"; sorral kezdődő séma a sémából olvassa ki, és az opció csak akkor működik fallbackként, ha hiányzik az adott sor.
Hogyan kezelik a 64 bites egész mezőket?
int64, uint64, sint64, fixed64 és sfixed64 alapértelmezés szerint stringre képeződnek, mert a JavaScript számok nem képesek a teljes 64 bites tartomány pontos ábrázolására. Kapcsold ki a "64 bites egészek karakterláncként" opciót a number-hez való leképezéshez.
Mi történik egy oneof csoporttal?
A "Oneof union típusként" opcióval bekapcsolva a oneof egy diszkriminált TypeScript unionná válik, így csak egy tag lehet beállítva. Kikapcsolva minden tag az saját opcionális mező lesz.
Előállít típusokat a gRPC szolgáltatások számára?
Kapcsold be a "Szolgáltatás metódus típusai" opciót, hogy hozzáadj egy TypeScript interfészt minden Protobuf szolgáltatáshoz, és minden rpc metódust típusozz unáris hívásokra vagy AsyncIterable-el való streamelésre, összhangban a séma stream kulcsszavaival.
A séma valamerre feltöltésre kerül?
Nem. A séma teljes mértékben a böngészőben kerül elemzésre és konvertálásra – semmi nem kerül szerverre, így biztonságosan beilleszthetsz belső vagy megjelent API definíciókat.