Схема Protobuf в типы TypeScript
Преобразуйте схему Protobuf в соответствующие интерфейсы TypeScript, перечисления и объединения.
Схема Protobuf в типы TypeScript
Вставьте схему Protobuf, и этот инструмент создаст соответствующие типы TypeScript: один интерфейс для каждого сообщения, одно перечисление для каждого перечисления Protobuf и тип объединения для каждого oneof. Используйте его, когда файл .proto определяет формат линии передачи API и вам нужен типобезопасный клиент без полного набора инструментов protoc.
Выберите proto2 или proto3 для управления способом чтения голых полей: неявное присутствие proto3 сохраняет скалярные и перечисляемые поля всегда присутствующими, а поля типа сообщения остаются необязательными; proto2 вместо этого читает явное ключевое слово required или optional для каждого поля. 64-битные целые числа по умолчанию преобразуются в строку, так как числа JavaScript теряют точность выше 2^53 — отключите опцию для получения числа вместо этого. Повторяющиеся поля становятся массивами, а поля map<K, V> становятся Record<K, V>. Oneof либо преобразуется в дискриминированный тип объединения, чтобы одновременно мог быть установлен только один член, либо преобразуется в обычные необязательные поля. Вложенные типы сохраняют свою вложенность в созданных именах (Outer_Inner), имена полей могут оставаться в snake_case или преобразуются в camelCase, комментарии переносятся как JSDoc, а включение генерации сервиса добавляет один интерфейс для каждого сервиса Protobuf с каждым методом rpc типизированным для унарных или потоковых вызовов.
Конвертер — это написанный вручную парсер, а не обёртка вокруг protoc: он охватывает обычную форму схемы — сообщения, перечисления, oneofs, карты, вложенные типы и сервисы — пропуская опции, расширения и зарезервированные операторы полей, которые ему не нужны для воспроизведения типа. Отсутствующая точка с запятой или несовпадающая скобка дает четкую ошибку с указанием примерно того, где это произошло.
Всё выполняется локально в вашем браузере; ваша схема никогда не загружается, поэтому безопасно вставлять определения собственных API. Скопируйте результат, загрузите его как файл .txt или отправьте обратно во входные данные, чтобы продолжить уточнение схемы.