JSON → TypeScript -muunnin
Liitä API-vastaus ja saat käyttövalmiit TypeScript-interfacet tai tyyppialiakset, joissa sisäkkäiset tyypit, valinnaiset kentät ja null-unionit on päätelty puolestasi.
Toimii selaimessaEi rekisteröitymistäMitään ei lähetetä
Näin käytät työkalua: JSON → TypeScript
- Liitä JSON-esimerkki, kuten API-vastaus, vasempaan kenttään tai avaa
.json-tiedosto. - Aseta juurityypin nimi (esimerkiksi
UsertaiApiResponse). - Valitse
interface- taitype-määrittelyt ja kytke päälleexport,readonlytai kaikki kentät valinnaisiksi. - Valitse
unknown(turvallisempi) taianyarvoille, joita esimerkistä ei voi päätellä, kuten tyhjille taulukoille ja null-arvoille. - Kopioi luotu koodi tai lataa se
.ts-tiedostona.
Miten tyypit päätellään
- Primitiivit: merkkijonot, numerot ja totuusarvot vastaavat tyyppejä
string,numberjaboolean. - Sisäkkäisistä objekteista tulee omia nimettyjä interfaceja PascalCase-muodossa, joten
billing_addressmuuttuu muotoonBillingAddress. - Objektitaulukot yhdistetään yhdeksi alkiotyypiksi, joka nimetään yksikössä:
userstuottaaUser[]. Avain, joka puuttuu joistakin alkioista, muuttuu valinnaiseksi (key?:). - Null-arvot yhdistetään avaimen muihin havaittuihin arvoihin:
string | null. Avain, joka on ainanull, saa tyypinunknowntaiany. - Sekataulukoista tulee unionitaulukoita, kuten
(number | string)[]. - Identtiset rakenteet määritellään kerran ja käytetään uudelleen, ja erilaiset rakenteet, jotka saisivat saman nimen, saavat numeropäätteen.
- Avaimet, jotka eivät ole kelvollisia tunnisteita, kuten
"first-name"tai"2fa", laitetaan lainausmerkkeihin.
interface vs. type
Tavallisille objektirakenteille nämä ovat lähes vaihdettavissa. interface-määrittelyjä voi laajentaa ja yhdistää, ja ne antavat hieman selkeämpiä kääntäjävirheitä. type-aliakset voivat ilmaista myös unioneita ja mapped typejä. Monet tiimit käyttävät interfaceja API-malleihin ja typejä kaikkeen muuhun; valitse se, mitä koodikantasi tai linterisi (@typescript-eslint/consistent-type-definitions) odottaa.
Paremmat tyypit esimerkistä
Tyypit voivat olla vain niin kattavia kuin esimerkki. Liitä vastaus, joka sisältää valinnaiset kentät, tai taulukko, jossa on useita erilaisia alkioita, jotta generaattori tunnistaa valinnaiset ja nullable-avaimet. Arvot kuten päivämäärät ja enumit tulevat JSONissa tavallisina merkkijonoina; tarkenna ne käsin jälkikäteen, esimerkiksi status: 'active' | 'disabled'. Ajonaikaista validointia varten yhdistä luodut tyypit skeemakirjastoon, kuten Zodiin.
Usein kysytyt kysymykset
Lähetetäänkö JSONini jonnekin?
Miten valinnaiset ominaisuudet tunnistetaan?
?. Yksittäisessä objektissa jokainen avain on pakollinen, ellet valitse Kaikki valinnaisia.Kannattaako käyttää <code>unknown</code> vai <code>any</code>?
unknown on turvallisempi: TypeScript pakottaa tarkentamaan arvon ennen käyttöä. any kytkee tyyppitarkistuksen pois kyseiseltä arvolta. Käytä sitä vain, jos aiot tarkentaa tyypit myöhemmin.Miksi ISO-päivämäärän tyyppi on <code>string</code>?
new Date()-kutsulla, vaihda ominaisuuden tyypiksi mallissasi Date.