Przejdź do treści

Generator interfejsów i typów TypeScript z JSON — Numio

Generuj interfejsy lub aliasy typów TypeScript z próbki JSON, np. odpowiedzi API. Narzędzie obsługuje zagnieżdżenia, null i tablice mieszane, a konwersja odbywa się w przeglądarce.

Converted in your browser. Null stays a value type; ? marks a field missing from some objects in an array. Empty arrays use unknown elements.

Wczytaj przykład (zastępuje wprowadzone dane)

JSON

TypeScript

Kiedy go używać

  • Utwórz nazwane typy TypeScript dla odpowiedzi API.
  • Porównaj kilka obiektów w tablicy, aby zobaczyć różniące się typy i pola opcjonalne.

Jak używać

  1. Wklej rzeczywisty JSON lub wczytaj jeden z przykładów. Wczytanie przykładu zastępuje dane wejściowe.
  2. Ustaw nazwę typu głównego i wybierz interface (osobne typy dla zagnieżdżonych obiektów) albo type (jeden alias typu z zagnieżdżonymi obiektami zapisanymi bezpośrednio).
  3. Sprawdź null, pola opcjonalne (?) i unie string/number, a następnie skopiuj typy.

Dane JSON

[{"id":1,"name":"Tokyo"},{"id":2}]

Wynik TypeScript (Root, interface)

export type Root = RootValueItem[];

export interface RootValueItem {
  id: number;
  name?: string;
}

Szczegóły i ograniczenia

Sprawdzany jest każdy element tablicy. W przykładzie drugiemu obiektowi brakuje name, więc pole staje się opcjonalne; pole istniejące z wartością null tworzy natomiast unię z null.

Pusta tablica daje unknown[]. Tablice mieszane stają się tablicami typu unii, a nie krotkami o stałej długości.

Typy obejmują tylko dane obecne w próbce. Nie są wywnioskowywane pola, które nigdy się nie pojawiają, formaty dat i adresów e-mail, zakresy wartości ani zależności między polami.

Dane wejściowe muszą być standardowym JSON. Najpierw usuń komentarze i końcowe przecinki za pomocą formatera JSON. Identyfikatory z zerami wiodącymi podawaj jako ciągi znaków.

Limit danych wejściowych to 1,000,000 znaków, około 64 poziomy i 50,000 wartości. Typy TypeScript nie walidują danych podczas wykonywania programu.

FAQ

Czy generować interface czy type?

Obie opcje opisują tę samą strukturę. interface tworzy nazwany interfejs dla każdego zagnieżdżonego obiektu, co ułatwia ponowne użycie; type tworzy pojedynczy alias typu z zagnieżdżonymi obiektami zapisanymi bezpośrednio.

Czy można wygenerować klasę TypeScript?

Nie, generowane są tylko interfejsy lub aliasy typów. Jeśli potrzebujesz walidacji podczas wykonywania, użyj JSON do Zod i dostosuj schemat do swoich reguł.

Czym różni się null od pola opcjonalnego?

{"name":null} ma pole name o wartości null, a {} nie ma pola name w ogóle. null pozostaje w typie, a ? jest dodawany tylko wtedy, gdy część obiektów w tej samej tablicy nie zawiera pola.

Co powstaje z tablicy JSON na najwyższym poziomie?

Alias typu tablicy i interfejs jej elementów, jak w powyższym przykładzie, gdzie Root ma typ RootValueItem[].

Specyfikacje i referencje