Indsæt TypeScript til venstre og klik på "Konverter" — vi laver det om til XMLIndsæt TypeScript-kode

Hvad værktøjet gør

Hvis du nogensinde har skullet skrive en XML-payload i hånden, der spejler et TypeScript-interface — til en SOAP-klient, en RSS-generator, en config-fil eller en contract-test — ved du, hvor meget stillads der hænger på det. Browseren giver dig XMLSerializer til en eksisterende DOM, ikke til et typet objekt. Indsæt TypeScript-en her, og du får velformet XML tilbage i én pass. En enkelt interface, en type-alias, en typet const eller noget dybt nestet — samme resultat.

Konverteren læser typerne, ikke kun værdierne. interface Order { ... } + const order: Order = { ... } producerer en <Order>-rod med hvert felt fra interfacet. Optional-felter (field?: T), der mangler i literalen, bliver til tomme elementer, så outputtet matcher den deklarerede shape. readonly ignoreres i output. Enums emitter deres værdi (string-enums emitter strengen, numeriske enums nummeret). Union-types emitter det, literalen faktisk indeholder. Generics løses via den konkrete instantiering.

Nestede interfaces og arrays foldes ud som nestede elementer. Et felt items: OrderItem[] bliver til <items><OrderItem/><OrderItem/></items> med element-typenavnet på hvert barn. Record- og Map-types bliver containere af <Entry><Key/><Value/></Entry>. Date, bigint og null håndteres per type — ISO-8601 for datoer, decimal streng for bigint, tomt element for null. Indsætter du flere type-definitioner plus en typet konstant, er det konstanten, der bliver serialiseret, og interfaces bruges som schema.

Sådan bruger du det

Tre trin. Virker på samme måde, om du indsætter et kort interface eller en hel types.ts.

1

Indsæt din TypeScript (eller prøv eksemplet)

Smid TS-en i editoren til venstre, som den er. Et interface, en type alias, en typet const eller et helt modul — alt er fint. Klik på Indlæs eksempel for at se et realistisk Order / OrderItem / Address-eksempel med nestede objekter.

Lad type-annotations være — det er dem, parseren bruger til at bestemme elementnavne og output-types. Lad også import- og export-statements stå, de ignoreres automatisk.

2

Tryk Konverter

Klik på den grønne Konverter-knap. Værktøjet læser typerne, resolverer værdierne og emitter XML-en i én omgang. Mens det kører, vises en kort loading-indikator.

3

Kopier XML-en

Højre panel fyldes med indrykket, velformet XML, som enhver standard-kompatibel XML-parser vil acceptere. Indsæt den lige ind i dit SOAP-request, din RSS-skabelon, din config-fil eller dit test-fixture.

Når det faktisk er brugbart

SOAP- / XML-API-klienter

Du har et TypeScript-interface til en SOAP-request-body og skal bruge XML-skelettet for at sende det via <code>fetch</code>. Indsæt interfacet plus et typet eksempel, kopier XML-en, indsæt den i dit request.

XSD-drevne kontrakter

Generer XML-eksempler ud fra dine TS-types til dokumentation, der ligger ved siden af en <a href="https://www.w3.org/TR/xmlschema-1/" target="_blank" rel="noopener">XSD</a>. Holder dine eksempler i sync med typerne, som er i sync med schemaet.

Start-configfiler

Et Settings-interface med 40 felter bliver til en klar-til-redigering XML-skabelon til ethvert XML-baseret config-store. Ingen manuel element-opbygning, ingen tastefejl, ingen glemte felter.

Mock-data til integrationstests

Konverter de typede fixtures fra din Vitest- eller Jest-opsætning til XML-seed-data til legacy-systemer og mock-servere, der stadig tager imod XML.

Typiske spørgsmål

Bruger det typerne eller kun objektets værdier?

Begge. Typerne bestemmer elementnavne, rækkefølge og hvilke felter, der skal være til stede (optional-e bliver tomme elementer, hvis de mangler). Værdi-literalen leverer dataene. Indsætter du kun en const uden interface, bruger værktøjet literalen direkte — det virker stadigvæk, bare uden det typdrevne sikkerhedsnet.

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

Optional-felter (field?: T), der mangler i værdien, skrives som tomme elementer (<field/>) for at holde output-shapen konsistent. Union-typer (string | number) emitter det, literalen faktisk indeholder. Discriminated unions virker også — diskriminanten bliver til en attribut eller et child-element afhængigt af dens navn.

Hvad med Date, bigint og enum?

Date-værdier kommer ud som ISO-8601-strenge. bigint emittes som sin decimale streng (uden n-suffix). String-enums emitter streng-værdien, numeriske enums emitter nummeret. null bliver til et tomt element, undefined fjerner elementet helt, medmindre feltet er deklareret som required.

Håndterer det generics, Record og Map?

Ja. Generiske interfaces løses via deres konkrete instantiering — Response<Order> med en rigtig Order-værdi emitter den konkrete shape. Record<K, V> bliver til en container af navngivne elementer, ét pr. nøgle. Map bliver en container af <Entry><Key/><Value/></Entry>-par. Tuple-typer emitter ét element pr. slot.

Kan jeg indsætte en hel types.ts-fil?

Ja. Indsæt lige så meget TypeScript, du vil. Import-statements ignoreres, type-only-deklarationer definerer shapen, og den første eksporterede eller top-level typede const er det, der bliver serialiseret. Er der flere kandidater, vælges den med flest resolvbare felter.

Bliver min kode gemt?

Koden sendes til backenden for at blive konverteret og bliver ikke gemt — vi logger ikke payloaden. Som altid med online-værktøjer: hvis koden er rigtig følsom, så kig den igennem først, inden du indsætter.

Andre værktøjer, du måske får brug for

TypeScript til XML er kun en brik i puslespillet. Her er de værktøjer, der passer godt sammen med det: