Ga naar inhoud
100% lokaal

Protobuf-schema naar TypeScript-types

Zet een Protobuf-schema om in overeenkomstige TypeScript-interfaces, enums en union-types.

Invoer
Uitvoer

Protobuf-schema naar TypeScript-types

Plak een Protobuf-schema in, en dit hulpmiddel genereert de overeenkomstige TypeScript-typen: één interface per bericht, één enum per Protobuf-enum en een union-type voor elke oneof. Gebruik het wanneer een .proto-bestand de draadindeling van een API definieert en u een typeveilige client wilt zonder de volledige protoc-toolchain uit te voeren.

Kies proto2 of proto3 om te bepalen hoe lege velden worden gelezen: proto3 met impliciete aanwezigheid houdt enkele scalaire en enum-velden altijd aanwezig terwijl berichtgefundeerde velden optioneel blijven; proto2 leest in plaats daarvan het expliciete vereiste en optioneel sleutelwoord op elk veld. 64-bits gehele getallen worden standaard aan string gekoppeld, omdat JavaScript-nummers hun nauwkeurigheid boven 2^53 verliezen – zet de optie uit om in plaats daarvan aan getal toe te wijzen. Herhaalde velden worden arrays en map<K, V>-velden worden Record<K, V>. Een oneof vouwt zich ofwel in een onderscheiden union-type, zodat slechts één lid kan worden ingesteld, of wordt afgevlakt tot gewone optionele velden. Geneste typen behouden hun nesting in de gegenereerde namen (Outer_Inner), veldnamen kunnen snake_case blijven of worden geconverteerd naar camelCase, opmerkingen worden als JSDoc overgedragen, en het activeren van servicegeneratie voegt één interface per Protobuf-service toe met elke rpc getypt voor unaire of streaming-aanroepen.

De converter is een handgeschreven parser, geen wrapper rond protoc: het behandelt de alledaagse vorm van een schema – berichten, enums, oneofs, maps, geneste typen en services – terwijl het opties, uitbreidingen en gereserveerde veldverklaringen overslaat die niet nodig zijn om een type te reproduceren. Een ontbrekend puntkomma of een niet-overeenkomend haakje produceert een duidelijke fout die aangeeft waar dit is gebeurd.

Alles wordt lokaal in uw browser uitgevoerd; uw schema wordt nooit geüpload, dus het is veilig om eigendomsdefinities van API's in te plakken. Kopieer het resultaat, download het als .txt-bestand, of stuur het terug naar de invoer om het schema verder aan te scherpen.

FAQ

Ondersteunt het zowel proto2 als proto3?
Ja. Selecteer de syntaxoptie, of laat het als volgt staan: een schema dat begint met een syntax = "proto2"; of syntax = "proto3"; regel wordt uit het schema zelf gelezen en de optie dient alleen als terugval wanneer die regel ontbreekt.
Hoe worden 64-bits integerfields behandeld?
int64, uint64, sint64, fixed64 en sfixed64 worden standaard op string gekoppeld, omdat JavaScript-nummers het volledige 64-bits bereik boven 2^53 niet nauwkeurig kunnen weergeven. Zet de optie "64-bits gehele getallen als string" uit om ze in plaats daarvan op getal toe te wijzen.
Wat gebeurt er met een oneof-groep?
Met "Oneof als union type weergeven" ingeschakeld, wordt een oneof een gediscrimineerde TypeScript-union, zodat slechts één lid kan worden ingesteld. Wanneer u het uitschakelt, wordt elk lid zijn eigen optionele veld.
Genereert het typen voor gRPC-services?
Zet "Service-methodetypes genereren" aan om één TypeScript-interface per service toe te voegen, met elke rpc-methode getypt voor een unaire aanroep of streaming met AsyncIterable, overeenkomend met de stream-trefwoorden van het schema.
Wordt mijn schema ergens geüpload?
Nee. Het schema wordt volledig in uw browser geparsed en geconverteerd – niets wordt naar een server verzonden, dus het is veilig om interne of niet-uitgebrachte API-definities in te plakken.