tigtools

JSON to TypeScript

Illesszen be egy JSON választ vagy fájlt, és kapjon TypeScript deklarációkat, amelyeket beilleszthet a kódjába.

Böngészőben fut Regisztráció nélkül

Deklarálás mint

Használata

  1. Illesszen be JSON-t a beviteli mezőbe, nyisson meg egy .json fájlt, vagy próbálja ki a példát.
  2. Adja meg a gyökértípus nevét, például Order vagy ApiResponse.
  3. Válasszon interface vagy type deklarációt, és hogy adjon-e hozzá export és readonly módosítókat.
  4. 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.