Konwerter JSON na TypeScript
Wklej odpowiedź API i otrzymaj gotowe interfejsy TypeScript lub aliasy typów z wywnioskowanymi typami zagnieżdżonymi, polami opcjonalnymi i uniami z null.
Działa w przeglądarceBez rejestracjiNic nie jest wysyłane
Jak używać: JSON na TypeScript
- Wklej przykładowy JSON, np. odpowiedź API, do lewego pola lub otwórz plik
.json. - Ustaw nazwę typu głównego (np.
UserlubApiResponse). - Wybierz deklaracje
interfacelubtypei przełączajexport,readonlylub wszystkie pola opcjonalne. - Wybierz
unknown(bezpieczniejsze) lubanydla wartości, których próbka nie ujawnia, np. pustych tablic i null. - Skopiuj wygenerowany kod lub pobierz go jako plik
.ts.
Jak wnioskowane są typy
- Typy proste: ciągi, liczby i wartości logiczne mapowane są na
string,numberiboolean. - Zagnieżdżone obiekty stają się osobnymi, nazwanymi interfejsami w PascalCase, więc
billing_addressstaje sięBillingAddress. - Tablice obiektów są scalane w jeden typ elementu nazwany w liczbie pojedynczej:
usersdajeUser[]. Klucz, którego brakuje w niektórych elementach, staje się opcjonalny (key?:). - Wartości null łączą się z innymi wartościami widzianymi dla danego klucza:
string | null. Klucz, który zawsze jestnull, otrzymujeunknownlubany. - Tablice mieszane stają się tablicami unii, np.
(number | string)[]. - Identyczne kształty są deklarowane raz i używane ponownie, a różne kształty, które miałyby tę samą nazwę, dostają sufiks liczbowy.
- Klucze, które nie są poprawnymi identyfikatorami, np.
"first-name"lub"2fa", są ujmowane w cudzysłowy.
interface a type
Dla zwykłych kształtów obiektów oba są niemal wymienne. Deklaracje interface można rozszerzać i scalać, a błędy kompilatora są nieco czytelniejsze. Aliasy type mogą też wyrażać unie i typy mapowane. Wiele zespołów używa interfejsów dla modeli API, a typów do wszystkiego innego; wybierz to, czego oczekuje Twój kod lub linter (@typescript-eslint/consistent-type-definitions).
Lepsze typy dzięki lepszej próbce
Typy mogą być tylko tak kompletne jak próbka. Wklej odpowiedź zawierającą pola opcjonalne lub tablicę z kilkoma zróżnicowanymi elementami, aby generator mógł wykryć klucze opcjonalne i nullable. Wartości takie jak daty i enumy przychodzą w JSON jako zwykłe ciągi; zawęź je potem ręcznie, np. status: 'active' | 'disabled'. Do walidacji w czasie wykonania połącz wygenerowane typy z biblioteką schematów, np. Zod.
Najczęściej zadawane pytania
Czy mój JSON jest wysyłany?
Jak wykrywane są właściwości opcjonalne?
?. Przy pojedynczym obiekcie każdy klucz jest wymagany, chyba że zaznaczysz Wszystkie opcjonalne.Użyć <code>unknown</code> czy <code>any</code>?
unknown jest bezpieczniejsze: TypeScript wymusza zawężenie wartości przed jej użyciem. any wyłącza sprawdzanie typów dla tej wartości. Używaj go tylko, jeśli planujesz później doprecyzować typy.Dlaczego data ISO ma typ <code>string</code>?
new Date(), zmień typ właściwości na Date w swoim modelu.