Schema Protobuf pentru tipuri TypeScript
Transformați o schemă Protobuf în interfețe TypeScript, enumerări și tipuri uniune corespunzătoare.
Schema Protobuf pentru tipuri TypeScript
Lipiți o schemă Protobuf și această unealtă generează tipurile TypeScript corespunzătoare: o interfață per mesaj, o enumerare per enumerare Protobuf și un tip uniune pentru fiecare oneof. Utilizați-o atunci când un fișier .proto definește formatul de transmisie al unui API și doriți un client type-safe fără a executa lanțul complet de instrumente protoc.
Alegeți proto2 sau proto3 pentru a controla modul în care sunt citite câmpurile: proto3 cu prezență implicită păstrează câmpurile scalare singulare și de enumerare întotdeauna prezente, în timp ce câmpurile de tip mesaj rămân opționale; proto2 citește în schimb cuvântul cheie explicit required sau optional pe fiecare câmp. Numerele întregi pe 64 de biți sunt mapate la string în mod implicit, deoarece numerele JavaScript pierd precizie deasupra 2^53 — opriți opțiunea pentru a utiliza number în schimb. Câmpurile repetate devin matrice și câmpurile map<K, V> devin Record<K, V>. Un oneof fie se transformă într-un tip uniune discriminat, astfel încât doar un membru poate fi setat la o dată, fie se aplatizează în câmpuri opționale obișnuite. Tipurile imbricate își păstrează imbricarea în numele generate (Outer_Inner), numele câmpurilor pot rămâne snake_case sau se convertesc la camelCase, comentariile sunt transportate ca JSDoc și activarea generării de servicii adaugă o interfață per serviciu Protobuf cu fiecare rpc tastat pentru apeluri uniare sau de streaming.
Conversia este un analizor scris manual, nu un wrapper în jurul protoc: acoperă forma de zi cu zi a unei scheme — mesaje, enumerări, oneofs, mapări, tipuri imbricate și servicii — în timp ce omite opțiuni, extensii și instrucțiuni privind câmpurile rezervate pe care nu trebuie să le reproducă un tip. O virgulă lipsă sau o paranteză nepotrivită produce o eroare clară care numește aproximativ unde s-a întâmplat.
Tot se execută local în browserul dvs.; schema dvs. nu este niciodată încărcată, deci este sigur să lipiți definiții proprietare ale API-ului. Copiați rezultatul, descărcați-l ca fișier .txt sau trimiteti-l înapoi la intrare pentru a continua rafinarea schemei.