Przejdź do treści
100% lokalnie

Schemat Protobuf na typy TypeScript

Konwertuj schemat Protobuf na odpowiadające interfejsy TypeScript, wyliczenia i typy unii.

Wejście
Wynik

Schemat Protobuf na typy TypeScript

Wklej schemat Protobuf a to narzędzie wygeneruje odpowiadające mu typy TypeScript: jeden interfejs na wiadomość, jedno wyliczenie na wyliczenie Protobuf i typ unii dla każdego oneof. Użyj go, gdy plik .proto definiuje format telegramu API i chcesz bezpiecznego pod względem typów klienta bez uruchamiania całego łańcucha narzędzi protoc.

Wybierz proto2 lub proto3, aby kontrolować sposób czytania golych pól: proto3 niejawna obecność utrzymuje pola skalarne i wyliczeniowe zawsze obecne, podczas gdy pola typizowane wiadomościami pozostają opcjonalne; proto2 zamiast tego czyta jawne słowa kluczowe required i optional na każdym polu. 64-bitowe liczby całkowite są mapowane na tekst domyślnie, ponieważ liczby JavaScript tracą precyzję powyżej 2^53 — wyłącz opcję dla number zamiast tego. Pola powtarzające się stają się tablicami, a pola map<K, V> stają się Record<K, V>. Oneof albo pada do zdyskryminowanego typu unii, aby tylko jeden członek mógł być ustawiony naraz, lub rozpada się na zwykłe pola opcjonalne. Typy zagnieżdżone zachowują swoje zagnieżdżenie w generowanych nazwach (Outer_Inner), nazwy pól mogą pozostać w snake_case lub być konwertowane na camelCase, komentarze przenoszą się jako JSDoc, a włączenie generowania usług dodaje jeden interfejs na usługę Protobuf z każdym rpc wpisanym dla połączeń jednokierunkowych lub strumieniowych.

Konwerter jest ręcznie napisanym analizatorem, a nie wrapperem wokół protoc: obejmuje codzienne formy schematu — wiadomości, wyliczenia, oneofs, mapy, typy zagnieżdżone i usługi — podczas gdy pomija opcje, rozszerzenia i zarezerwowane instrukcje pól, które nie musi reprodukować typ. Brakujący średnik lub niedopasowany nawias wytwarza jasny błąd nazwę mniej więcej gdzie to się stało.

Wszystko działa lokalnie w twojej przeglądarce; twój schemat nigdy nie jest przesyłany, więc jest bezpiecznie wklejać własnościowe definicje API. Skopiuj wynik, pobierz go jako plik .txt lub wyślij go z powrotem do wejścia, aby kontynuować udoskonalanie schematu.

Częste pytania

Czy obsługuje zarówno proto2 jak i proto3?
Tak. Wybierz opcję syntaxe lub zostaw ją taką jaką jest: schemat, który zaczyna się linią syntax = "proto2"; lub syntax = "proto3"; jest czytany ze samego schematu i opcja działa tylko jako fallback, gdy ten wiersz brakuje.
Jak są obsługiwane pola 64-bitowych liczb całkowitych?
int64, uint64, sint64, fixed64 i sfixed64 są mapowane na tekst domyślnie, ponieważ liczby JavaScript nie mogą dokładnie reprezentować pełnego zakresu 64-bitowego. Wyłącz "64-bitowe liczby całkowite jako tekst", aby zamiast tego mapować je na number.
Co się stanie z grupą oneof?
Gdy "Reprezentuj oneof jako typ unii" jest włączony, oneof staje się zdyskryminowanym typem unii TypeScript, dzięki czemu tylko jeden członek może być ustawiony. Gdy jest wyłączony, każdy członek staje się własnym polem opcjonalnym.
Czy generuje typy dla usług gRPC?
Włącz "Generuj typy metod usługi" i dodaj jeden interfejs TypeScript na usługę, przy czym każda metoda rpc jest wpisana dla połączenia jednokierunkowego lub strumieniowania z AsyncIterable, odpowiadającego słowom kluczowym stream schematu.
Czy mój schemat jest przesyłany gdziekolwiek?
Nie. Schemat jest analizowany i konwertowany całkowicie w twojej przeglądarce — nic nie jest wysyłane na serwer, więc bezpiecznie wklejać wewnętrzne lub nie opublikowane definicje API.