{ }JSONKit.tools

JSON na TypeScript

Zamień przykładowy ładunek w interfejsy TypeScript — zagnieżdżone obiekty dostają własny typ, tablice mieszane stają się uniami, a klucze brakujące w części wierszy wychodzą jako opcjonalne.

JSON

TypeScript

Czekam na dane…

O tym narzędziu

Ręczne typowanie odpowiedzi API jest żmudne i łatwo pomylić się w subtelny sposób. Wklej jeden prawdziwy ładunek, a interfejsy powstaną same: każdy zagnieżdżony obiekt staje się własnym nazwanym typem, tablice obiektów są scalane w jeden kształt, więc klucz brakujący w części wierszy zostaje oznaczony jako opcjonalny, a tablice mieszane stają się uniami. Identyczne kształty są wypisywane raz i współdzielone. Czego narzędzie nie potrafi, to zgadywać poza przykładem — pole, które w Twojej próbce jest null-em, zostaje otypowane jako null, bo nic w danych nie mówi inaczej.

Jak używać

  1. 1Wklej reprezentatywną odpowiedź JSON — im więcej wierszy ma tablica, tym lepsze wykrywanie pól opcjonalnych.
  2. 2Nazwij typ główny i wybierz interface albo type, zgodnie ze swoją bazą kodu.
  3. 3Skopiuj wynik do pliku .d.ts, a potem poszerz każde pole, które próbka opisała zbyt wąsko.

Częste pytania

›Jak rozstrzygane są pola opcjonalne?

Przez porównanie obiektów w tablicy. Jeśli klucz występuje w części elementów, a w innych go brak, zostaje oznaczony jako opcjonalny; klucz obecny wszędzie jest wymagany. Pojedynczy obiekt nie daje przesłanek w żadną stronę, więc wszystkie jego klucze wychodzą jako wymagane.

›Dlaczego pole ma typ null zamiast string | null?

Bo null to wszystko, co pokazała próbka. Wnioskowanie opisuje wyłącznie otrzymane dane — poszerz takie pola ręcznie albo wklej próbkę zawierającą wypełnioną wartość.

›Dlaczego dwa różne klucze dzielą jeden interfejs?

Identyczne kształty są wypisywane raz i używane ponownie, co utrzymuje wyjście krótkim. Zmień nazwę interfejsu, jeśli koncepcyjnie są to różne typy, które dziś przypadkiem wyglądają tak samo.

›interface czy type — co wybrać?

Interfejsy da się rozszerzać i scalać deklaracjami, co pasuje do kształtów obiektów i publicznych API. Aliasy typów obejmują dodatkowo unie i typy mapowane. Dla zwykłych generowanych kształtów ładunku oba zachowują się tak samo, więc użyj tego, czego Twoja baza kodu już używa.

›Czy to waliduje dane w czasie działania?

Nie. Typy TypeScriptu są usuwane przy kompilacji, więc nic nie sprawdza, czy odpowiedź API faktycznie pasuje. Jeśli potrzebujesz gwarancji w czasie działania, wygeneruj zamiast tego schemat w Zod albo Valibot i wyprowadź z niego typ.