Käyttöohje
- Liitä JSON syöttökenttään, avaa .json-tiedosto tai kokeile esimerkkiä.
- Aseta juurityypin nimi, esimerkiksi Order tai ApiResponse.
- Valitse interface- tai type-määritykset sekä se, lisätäänkö export ja readonly.
- Kopioi luotu TypeScript tai lataa se types.ts-tiedostona.
Näin se toimii
Generaattori käy läpi koko JSON-dokumentin ja tallentaa kussakin kohdassa havaitut arvon tyypit. Jokaisesta JSON-objektista tulee oma nimetty tyyppimäärittely. Nimi muodostuu ominaisuuden avaimesta PascalCase-muodossa, joten “shipping_address” muuttuu muotoon ShippingAddress. Taulukon alkiot nimetään avaimen yksikkömuodon mukaan: “items” tuottaa Item, “categories” tuottaa Category, ja avaimet, jotka eivät näytä monikolta, saavat “Item”-päätteen.
Kaikki saman taulukon sisällä olevat objektit yhdistetään yhdeksi interfaceksi. Jos avain esiintyy vain joissakin niistä, se merkitään valinnaiseksi “?”-merkillä. Jos arvolla on eri paikoissa eri tyyppejä, tyypiksi tulee unioni, kuten string | number. null säilyy omana tyyppinään, joten kenttä, joka on joskus null, saa tyypin string | null. Tyhjä taulukko saa tyypin unknown[], koska siitä ei voi päätellä mitään. Kaksi objektia, joilla on täsmälleen samat ominaisuudet ja tyypit, jakavat saman interfacen eikä niistä synny kaksoiskappaleita. Avaimet, jotka eivät ole kelvollisia tunnisteita, kuten “first-name”, ympäröidään lainausmerkeillä.
Tulos kuvaa vain liittämääsi näytettä. Kenttä, joka on todellisuudessa valinnainen tai voi olla null, on pakollinen ja ei-null-tyyppinen, jos näyte ei sitä osoita, ja päivämäärät tulevat tavallisina merkkijonoina. Tarkista tyypit API-dokumentaatiota vasten ennen kuin luotat niihin.
Esimerkit
API-vastauksen tyypittäminen
Liitä verkkokauppasi API:sta tilaus ja anna juurinimeksi Order. Saat interfacet Order, Customer, Item ja Shipping, ja Item sisältää note?: string, koska vain toisella kahdesta nimikkeestä on note.
Vain luku -konfiguraatio
Liitä config.json, valitse “Tee ominaisuuksista vain luku” ja liitä tulos tiedostoon config.d.ts, jolloin kääntäjä havaitsee vahingossa tehdyt kirjoitukset konfiguraatioon.
Taulukko ylimmällä tasolla
Listapäätepiste palauttaa [{…}, {…}]. Kun juurinimi on Product, tulos alkaa rivillä “export type Product = ProductItem[];”, jota seuraa ProductItem-interface.
Usein kysytyt kysymykset
Miksi kenttä on valinnainen tulosteessa?
Koska ainakin yhdestä saman taulukon objektista puuttuu kyseinen avain. Jos se on jokaisessa objektissa, se on pakollinen. Liitä useita tietueita saadaksesi tarkemmat valinnaiset kentät.
Miksi päivämäärä on tyypitetty merkkijonoksi?
JSON:ssa ei ole päivämäärätyyppiä, joten päivämäärät kulkevat merkkijonoina. Generaattori ei arvaa muotoja. Muuta tyyppi itse, jos koodisi muuntaa ne Date-objekteiksi.
Mitä eroa on interface- ja type-määrityksillä?
Objektimuodoille ne toimivat lähes samoin. Interface-määrityksiä voi laajentaa ja yhdistää myöhemmillä määrityksillä; type-alias-määrityksiä ei voi avata uudelleen. Valitse tyyli, jota koodipohjassasi jo käytetään.
Voiko se luoda suoritusaikaista validointia, kuten Zod-skeemoja?
Ei. Se tuottaa vain TypeScript-tyyppimäärityksiä, jotka tarkistetaan käännösaikana eivätkä validoi dataa suoritusaikana.
Tietosuoja
JSON:si analysoidaan vain selaimessasi. Mitään ei lähetetä, tallenneta tai sisällytetä analytiikkaan.