İçeriğe atla
%100 yerel

Protobuf şemasından TypeScript türleri

Protobuf şemasını TypeScript arayüzlerine, numaralandırmalara ve birleşimlere dönüştür.

Giriş
Çıkış

Protobuf şemasından TypeScript türleri

Bir Protobuf şeması yapıştırın ve bu araç eşleşen TypeScript türlerini oluşturur: her ileti için bir arayüz, her Protobuf numaralandırması için bir enum ve her oneof için bir birleşim türü. Bir .proto dosyası bir API'nin tel biçimini tanımladığında ve tam protoc araç zincirini çalıştırmadan tür güvenli bir istemci istediğinizde kullanın.

Basit alanların okunmasını denetlemek için proto2 veya proto3 sözdizimini seçin: proto3 örtük varlık, tekil skaler ve enum alanlarını her zaman mevcut tutar, oysa ileti türündeki alanlar isteğe bağlı kalır; proto2 bunun yerine her alana açık required ve optional anahtar sözcüğünü okur. 64 bitlik tamsayılar varsayılan olarak string ile eşlenir, çünkü JavaScript sayıları 2^53 üzerinde kesinliği kaybeder – seçeneği kapatarak number ile eşlemek için. Yinelenen alanlar dizilere ve map<K, V> alanları Record<K, V> olur. Bir oneof ya ayırıcı bir TypeScript birleşim türüne daraltılır, böylece yalnızca bir üye ayarlanabilir, ya da düz isteğe bağlı alanlar halinde düzleştirilir. İç içe türler, oluşturulan adlarda iç içeliğini korur (Outer_Inner), alan adları snake_case biçiminde kalabilir veya camelCase'e dönüştürülebilir, açıklamalar JSDoc olarak taşınır ve hizmet oluşturma etkinleştirildiğinde her Protobuf hizmeti için bir arayüz eklenir ve her rpc, tekli veya AsyncIterable ile akışlı çağrılar için yazılır.

Dönüştürücü protoc etrafında bir sarmalayıcı değil, elle yazılmış bir ayrıştırıcıdır: şemanın gündelik şeklini kapsar – iletiler, numaralandırmalar, oneoflar, haritalar, iç içe türler ve hizmetler – seçenekleri, uzantıları ve türü yeniden üretmesi gereken rezerve alan ifadelerini atlarken. Eksik bir noktalı virgül veya eşleşmeyen bir ayraç, nerede meydana geldiğini adlandıran açık bir hata üretir.

Her şey yerel olarak tarayıcınızda çalışır; şemanız hiçbir zaman yüklenmez, bu nedenle tescilli API tanımlarını güvenle yapıştırabilirsiniz. Sonucu kopyalayın, .txt dosyası olarak indirin veya şemayı iyileştirmeye devam etmek için giriş olarak tekrar gönderin.

FAQ

Proto2 ve proto3'ü destekliyor mu?
Evet. Sözdizimi seçeneğini seçin veya olduğu gibi bırakın: bir syntax = "proto2"; veya syntax = "proto3"; ile başlayan şema şemadan okunur ve seçenek yalnızca bu satır eksik olduğunda geri dönüş olarak davranır.
64 bitlik tamsayı alanları nasıl işlenir?
int64, uint64, sint64, fixed64 ve sfixed64 varsayılan olarak dize ile eşlenir, çünkü JavaScript sayıları tam 64 bitlik aralığı kesin olarak temsil edemez. "64 bitlik tamsayılar dize olarak" seçeneğini kapatarak bunun yerine sayı ile eşlemek için.
Bir oneof grubuna ne olur?
"Oneof birleşim türü olarak temsil et" açıkken, bir oneof ayırıcı bir TypeScript birleşimine dönüşür, böylece yalnızca bir üye ayarlanabilir. Kapalı olduğunda, her üye kendi isteğe bağlı alanı haline gelir.
gRPC hizmetleri için türler oluşturuyor mu?
Bir Protobuf hizmeti başına bir TypeScript arayüzü eklemek için "Hizmet metodu türlerini oluştur" seçeneğini açın; şemanın akış anahtar sözcükleriyle eşleşen, her rpc metodu tekli veya AsyncIterable ile akışlı çağrılar için yazılır.
Şemam herhangi bir yere yükleniyor mu?
Hayır. Şema tamamen tarayıcınızda ayrıştırılır ve dönüştürülür – hiçbir şey sunucuya gönderilmez, bu nedenle iç veya yayınlanmamış API tanımlarını güvenle yapıştırabilirsiniz.