Lim inn TypeScript på venstre side og klikk "Konverter" — vi gjør det om til XMLLim inn TypeScript-kode

Hva verktøyet gjør

Hvis du noen gang har måttet skrive et XML-payload for hånd som speiler et TypeScript-interface — for en SOAP-klient, en RSS-generator, en config-fil eller en contract-test — vet du hvor mye stillas som henger på det. Nettleseren gir deg XMLSerializer for en eksisterende DOM, ikke for et typet objekt. Lim inn TypeScript-en her og få velformet XML tilbake i én pass. Et enkelt interface, en type-alias, en typet const eller noe dypt nestet — samme resultat.

Konverteren leser typene, ikke bare verdiene. interface Order { ... } + const order: Order = { ... } produserer en <Order>-rot med hvert felt fra interfacet. Optional-felter (field?: T) som mangler i literalen, blir tomme elementer slik at outputet matcher den deklarerte shapen. readonly ignoreres for output. Enums emitter verdien sin (string-enums emitter strengen, numeriske enums nummeret). Union-typer emitter det literalen faktisk inneholder. Generics løses via den konkrete instansieringen.

Nestede interfaces og arrays brettes ut som nestede elementer. Et felt items: OrderItem[] blir til <items><OrderItem/><OrderItem/></items>, med element-typenavnet på hvert barn. Record- og Map-typer blir containere av <Entry><Key/><Value/></Entry>. Date, bigint og null håndteres per type — ISO-8601 for datoer, decimal streng for bigint, tomt element for null. Limer du inn flere typedefinisjoner pluss en typet konstant, er det konstanten som blir serialisert, og interfacene brukes som schema.

Slik bruker du det

Tre steg. Fungerer likt enten du limer inn et kort interface eller en hel types.ts.

1

Lim inn TypeScript-en din (eller prøv eksempelet)

Dropp TS-en i editoren til venstre slik den er. Et interface, en type alias, en typet const eller en hel modul — alt går bra. Klikk på Last inn eksempel for å se et realistisk Order / OrderItem / Address-eksempel med nestede objekter.

La type-annotations stå — det er dem parseren bruker for å bestemme elementnavn og output-typer. La også import- og export-statements stå; de blir ignorert automatisk.

2

Trykk Konverter

Klikk på den grønne Konverter-knappen. Verktøyet leser typene, resolver verdiene og emitter XML-en i én omgang. Mens det kjører, vises en kort loading-indikator.

3

Kopier XML-en

Panelet til høyre fylles med innrykket, velformet XML som enhver standardkompatibel XML-parser vil ta imot. Lim den rett inn i SOAP-requestet ditt, RSS-malen, config-fila eller testfixture-en.

Når det faktisk er nyttig

SOAP- / XML-API-klienter

Du har et TypeScript-interface for en SOAP-request-body og trenger XML-skjelettet for å sende det via <code>fetch</code>. Lim inn interfacet pluss et typet eksempel, kopier XML-en, lim inn i requestet.

XSD-drevne kontrakter

Generer XML-eksempler ut fra TS-typene dine for dokumentasjon som står ved siden av en <a href="https://www.w3.org/TR/xmlschema-1/" target="_blank" rel="noopener">XSD</a>. Holder eksemplene i sync med typene, som er i sync med schemaet.

Start-configfiler

Et Settings-interface med 40 felter blir en klar-til-å-redigeres XML-mal for et hvilket som helst XML-basert config-store. Ingen manuell elementbygging, ingen skrivefeil, ingen glemte felter.

Mock-data for integrasjonstester

Konverter de typede fixtures fra Vitest- eller Jest-oppsettet ditt til XML-seed-data for legacy-systemer og mock-servere som fortsatt tar imot XML.

Vanlige spørsmål

Bruker den typene eller bare objektverdiene?

Begge. Typene bestemmer elementnavn, rekkefølge og hvilke felter som må være til stede (optional-e blir tomme elementer hvis de mangler). Verdi-literalen leverer dataene. Hvis du bare limer inn en const uten interface, bruker verktøyet literalen direkte — det virker fortsatt, bare uten det typedrevne sikkerhetsnettet.

Hvordan håndterer den optional-felter og union-typer?

Optional-felter (field?: T) som mangler i verdien, skrives som tomme elementer (<field/>) for å holde output-shapen konsistent. Union-typer (string | number) emitter det literalen faktisk inneholder. Discriminated unions funker også — diskriminanten blir attribute eller barn-element avhengig av navnet.

Hva med Date, bigint og enum?

Date-verdier kommer ut som ISO-8601-strenger. bigint emittes som sin decimale streng (uten n-suffiks). String-enums emitter streng-verdien, numeriske enums emitter tallet. null blir et tomt element, undefined fjerner elementet helt med mindre feltet er deklarert som required.

Takler den generics, Record og Map?

Ja. Generiske interfaces løses via den konkrete instansieringen — Response<Order> med en reell Order-verdi emitter den konkrete shapen. Record<K, V> blir en container av navngitte elementer, ett per nøkkel. Map blir en container av <Entry><Key/><Value/></Entry>-par. Tuple-typer emitter ett element per slot.

Kan jeg lime inn en hel types.ts-fil?

Ja. Lim inn så mye TypeScript du vil. Import-statements ignoreres, type-only-deklarasjoner definerer shapen, og den første eksporterte eller top-level typede const-en er det som blir serialisert. Finnes det flere kandidater, velges den med flest resolvbare felter.

Blir koden min lagret?

Koden sendes til backend for å bli konvertert og lagres ikke — vi logger ikke payloaden. Som alltid med online-verktøy: hvis koden er virkelig sensitiv, kast et blikk på den før du limer inn.

Andre verktøy du kanskje trenger

TypeScript til XML er bare én brikke i puslespillet. Her er verktøyene som passer godt sammen med det: