onlinetools.dev

JSON → typy TypeScript

Wywnioskuj interfejsy TypeScript z przykładowego JSON-a w mgnieniu oka

Działa lokalnie
loading…
O tym narzędziu

Wklej przykładowy JSON — odpowiedź API, plik konfiguracyjny — i dostań wywnioskowany z niego interfejs TypeScriptu: zagnieżdżone obiekty stają się zagnieżdżonymi typami, tablice dostają typ elementu (a przy mieszanej zawartości unię), a klucze niebędące poprawnymi identyfikatorami trafiają w cudzysłowy.

Wygenerowane typy to punkt wyjścia, a nie kontrakt: wnioskowanie widzi jedną próbkę, więc pole, które akurat jest w niej null, otypuje się jako null, a pola opcjonalne, których w próbce nie było, po prostu dla niego nie istnieją. Wynik jest celowo prosty — bez dekoratorów, bez walidacji w czasie działania — żebyś mógł wkleić go gdziekolwiek i dopracować.

Dla pól różniących się między żądaniami przepuść drugą próbkę i scal ręcznie, albo przejdź na narzędzia oparte na schemacie (OpenAPI, zod), gdy kształt danych się ustabilizuje. Na codzienne „potrzebuję po prostu typu dla tej odpowiedzi” jedno wklejenie wystarczy.

Często zadawane pytania

Dlaczego moje pole dopuszczające null ma typ po prostu null?
Wnioskowanie widzi tylko wklejoną próbkę. Jeśli pole było tam null-em, to null jest wszystkim, co może wiedzieć. Po wygenerowaniu zmień to na string | null (albo cokolwiek jest prawdziwym typem) — lub wklej próbkę, w której pole jest wypełnione.
Jak traktowane są pola opcjonalne?
Nie są wykrywane — pojedyncza próbka nie odróżni „zawsze obecne” od „obecne tym razem”. Pola nieobecne w próbce są nieobecne w typie. Tam, gdzie wiesz, że API je pomija, oznacz je opcjonalnie (name?:) ręcznie.
Co powstaje z tablic o mieszanych typach?
Unia: [1, "a"] daje (number | string)[]. Puste tablice dają unknown[], bo nie ma elementu do zbadania — podmień na prawdziwy typ elementu, gdy go poznasz.
Używać typów wywnioskowanych czy biblioteki schematów w rodzaju zod?
Wywnioskowane interfejsy istnieją wyłącznie w czasie kompilacji — niczego nie walidują w czasie działania. Do narzędzi wewnętrznych i szybkiego otypowania są idealne; dla niezaufanych danych w czasie działania zdefiniuj schemat zod/valibot i wyprowadź z niego typ statyczny.
Powiązane narzędzia