TypeScript till XML Converter
Klistra in ett TypeScript-interface, en type eller ett typat objekt. Få tillbaka ren XML.
Vad verktyget gör
Om du någonsin fått handskriva en XML-payload som speglar ett TypeScript-interface — till en SOAP-klient, en RSS-generator, en config-fil eller ett contract-test — vet du hur mycket ställning som hänger ihop med det. Webbläsaren ger dig XMLSerializer för en befintlig DOM, inte för ett typat objekt. Klistra in TypeScripten här så får du välformad XML tillbaka i en pass. Ett ensamt interface, en type-alias, en typad const eller något djupt nestat — samma resultat.
Konvertern läser typerna, inte bara värdena. interface Order { ... } + const order: Order = { ... } producerar en <Order>-rot med varje fält från interfacet. Optional-fält (field?: T) som saknas i literalen blir tomma element så att outputen matchar den deklarerade shapen. readonly ignoreras i output. Enums emitterar sitt värde (string-enums emitterar strängen, numeriska enums emitterar numret). Union-typer emitterar det som literalen faktiskt innehåller. Generics löses av den konkreta instansieringen.
Nestade interfaces och arrays expanderar som nestade element. Ett fält items: OrderItem[] blir <items><OrderItem/><OrderItem/></items>, med element-typnamnet för varje barn. Record- och Map-typer blir containers av <Entry><Key/><Value/></Entry>. Date, bigint och null hanteras per typ — ISO-8601 för datum, decimal sträng för bigint, tomt element för null. Om du klistrar in flera typdefinitioner plus en typad konstant är det konstanten som serialiseras och interfaces används som schema.
Så använder du det
Tre steg. Funkar lika bra om du klistrar in ett kort interface eller en hel types.ts.
Klistra in din TypeScript (eller testa exemplet)
Släpp TS:en i editorn till vänster som den är. Ett interface, en type alias, en typad const eller en hel modul — allt går bra. Klicka på Ladda exempel för att se ett realistiskt Order / OrderItem / Address-exempel med nestade objekt.
Låt type-annotations vara kvar — det är det parsern använder för att bestämma elementnamn och output-typer. Låt även import- och export-statements vara kvar, de ignoreras automatiskt.
Tryck på Konvertera
Klicka på den gröna Konvertera-knappen. Verktyget läser typerna, löser värdena och emitterar XML:en i en smäll. Medan det kör syns en kort laddningsindikator.
Kopiera XML-en
Höger panel fylls med indragen, välformad XML som vilken standardkompatibel XML-parser som helst accepterar. Klistra in den rakt i din SOAP-request, RSS-mall, config-fil eller testfixture.
När det faktiskt är användbart
SOAP- / XML-API-klienter
Du har ett TypeScript-interface för en SOAP-request-body och behöver XML-skelettet för att skicka via <code>fetch</code>. Klistra in interfacet plus ett typat exempel, kopiera XML-en, klistra in den i din request.
XSD-drivna kontrakt
Generera XML-exempel från dina TS-typer till dokumentation som ligger bredvid en <a href="https://www.w3.org/TR/xmlschema-1/" target="_blank" rel="noopener">XSD</a>. Håller dina exempel i sync med typerna, som är i sync med schemat.
Start-configfiler
Ett Settings-interface med 40 fält blir en redo-att-editeras XML-mall för vilket XML-baserat config-store som helst. Inget handbyggande av element, inga typos, inga bortglömda fält.
Mock-data för integrationstester
Konvertera de typade fixtures från din Vitest- eller Jest-setup till XML-seed-data för legacy-system och mock-servrar som fortfarande konsumerar XML.
Vanliga frågor
Använder det typerna eller bara objektvärdena?
Båda. Typerna bestämmer elementnamn, ordning och vilka fält som måste finnas (optional-fält blir tomma element om de saknas). Värde-literalen bidrar med datat. Om du bara klistrar in en const utan interface använder verktyget literalen direkt — fungerar fortfarande, bara utan det typdrivna skyddsnätet.
Hur hanterar det optional-fält och union-typer?
Optional-fält (field?: T) som saknas i värdet skrivs som tomma element (<field/>) för att hålla output-shapen konsekvent. Union-typer (string | number) emitterar det literalen faktiskt innehåller. Discriminated unions funkar också — diskriminanten blir attribut eller barnelement beroende på dess namn.
Vad händer med Date, bigint och enum?
Date-värden kommer ut som ISO-8601-strängar. bigint emitteras som sin decimala sträng (utan n-suffix). String-enums emitterar sträng-värdet, numeriska enums emitterar numret. null blir ett tomt element, undefined tar bort elementet helt om fältet inte är deklarerat som required.
Hanterar det generics, Record och Map?
Ja. Generiska interfaces löses via sin konkreta instansiering — Response<Order> med ett riktigt Order-värde emitterar den konkreta shapen. Record<K, V> blir en container av namngivna element, ett per nyckel. Map blir en container av <Entry><Key/><Value/></Entry>-par. Tuple-typer emitterar ett element per slot.
Kan jag klistra in en hel types.ts-fil?
Ja. Klistra in hur mycket TypeScript du vill. Import-statements ignoreras, type-only-deklarationer definierar shapen och den första exporterade eller top-level-typade const-en är det som serialiseras. Finns flera kandidater väljs den med flest resolvbara fält.
Sparas min kod?
Koden skickas till backenden för att konverteras och persisteras inte — vi loggar inte payloaden. Som alltid med online-verktyg: om koden är riktigt känslig, titta igenom den först innan du klistrar in.
Andra verktyg du kan behöva
TypeScript till XML är bara en pusselbit. Här är verktygen som passar bra ihop med det: