Használata
- Illesszen be JSON-t a beviteli mezőbe, nyisson meg egy .json fájlt, vagy próbálja ki a példát.
- Adja meg a gyökértípus nevét, például Order vagy ApiResponse.
- Válasszon interface vagy type deklarációt, és hogy adjon-e hozzá export és readonly módosítókat.
- Másolja ki a generált TypeScriptet, vagy töltse le types.ts fájlként.
Hogyan működik
A generátor végigjárja a teljes JSON-dokumentumot, és rögzíti az egyes helyeken talált értéktípusokat. Minden JSON-objektum saját elnevezett deklarációt kap. A név a tulajdonságkulcsból származik PascalCase formában, így a „shipping_address” ShippingAddress lesz. A tömbök elemeit a kulcs egyes számú alakjáról nevezi el: az „items” Item, a „categories” Category nevet ad, a nem többes számúnak tűnő kulcsok pedig „Item” utótagot kapnak.
Az egy tömbben lévő összes objektum egyetlen interfésszé olvad össze. Ha egy kulcs csak némelyikben szerepel, opcionálisnak jelöljük a „?” jellel. Ha egy érték különböző helyeken eltérő típusú, a típus unió lesz, például string | number. A null saját típusként marad, így egy olyan mező, amely néha null, string | null lesz. Az üres tömb unknown[] lesz, mert nincs miből következtetni. Két pontosan azonos tulajdonságú és típusú objektum közös interfészt használ duplikátumok létrehozása helyett. A nem érvényes azonosítónak minősülő kulcsok, például a „first-name”, idézőjelet kapnak.
Az eredmény csak a beillesztett mintát írja le. Egy mező, amely a valóságban opcionális vagy lehet null, kötelező és nem null típusú lesz, ha a mintája ezt nem mutatja, a dátumok pedig egyszerű szövegként érkeznek. Mielőtt támaszkodna rájuk, ellenőrizze a típusokat az API-dokumentációja alapján.
Példák
API-válasz tipizálása
Illesszen be egy rendelést a bolt API-jából, és adja meg gyökérnévként az Order nevet. Az Order, Customer, Item és Shipping interfészeket kapja, az Item esetében note?: string mezővel, mert a két tétel közül csak az egyikhez tartozik megjegyzés.
Csak olvasható konfiguráció
Illesszen be egy config.json fájlt, jelölje be a „Tulajdonságok csak olvashatóvá tétele” lehetőséget, majd illessze az eredményt a config.d.ts fájlba, hogy a konfiguráció véletlen módosításait a fordító jelezze.
Tömb a legfelső szinten
Egy lista-végpont [{…}, {…}] formát ad vissza. Product gyökérnév esetén a kimenet így kezdődik: „export type Product = ProductItem[];”, majd a ProductItem interfész következik.
Gyakori kérdések
Miért lesz egy mező opcionális a kimenetben?
Mert a tömbben legalább egy objektum nem tartalmazza ezt a kulcsot. Ha mindegyik tartalmazza, akkor kötelező lesz. Illesszen be több rekordot a pontosabb opcionális mezőkért.
Miért string típusú a dátum?
A JSON-nak nincs dátum típusa, ezért a dátumok karakterláncként szerepelnek. A generátor nem találgatja a formátumot. Módosítsa a típust saját maga, ha a kódja Date objektummá alakítja őket.
Mi a különbség az interface és a type között?
Objektumok alakjának leírására szinte ugyanúgy működnek. Az interfészek kiterjeszthetők és későbbi deklarációkkal összevonhatók; a típusaliasok nem nyithatók meg újra. Válassza azt a stílust, amelyet a kódbázisa már használ.
Képes futásidő-ellenőrzést generálni, például Zod sémákat?
Nem. Csak TypeScript deklarációkat készít, amelyeket fordítási időben ellenőriznek, és futásidőben nem érvényesítik az adatokat.
Adatvédelem
Az Ön JSON-jét csak a böngészőjében elemzi. Semmi nem kerül feltöltésre, tárolásra vagy az analitikába.