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
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ć
- 1Wklej reprezentatywną odpowiedź JSON — im więcej wierszy ma tablica, tym lepsze wykrywanie pól opcjonalnych.
- 2Nazwij typ główny i wybierz interface albo type, zgodnie ze swoją bazą kodu.
- 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.