Przejdź do treści

Konwerter JSON na typy Flow — Numio

Generuje aliasy typu Flow na podstawie próbki JSON, zaczynając od // @flow. Każdy zagnieżdżony obiekt otrzymuje swój własny eksportowany typ, a brakujące klucze w niektórych elementach tablicy są oznaczone opcjonalnym znakiem ?.

Wpisywanie odpowiedzi API w bazie kodu React lub React Native, która nadal korzysta z Flow.

JSON

Flow

Kiedy go używać

  • Wpisywanie odpowiedzi API w bazie kodu React lub React Native, która nadal korzysta z Flow.
  • Pisanie typów dla urządzeń lub danych próbnych w zestawie testów sprawdzanych pod kątem przepływu.

Jak używać

  1. Wklej obiekt JSON do edytora.
  2. Otwórz ustawienia, aby zmienić prefiks (domyślny I) i nazwę root (domyślnie RootObject); typ główny staje się IRootObject, a typy zagnieżdżone otrzymują ten sam przedrostek.
  3. Skopiuj wyeksportowane typy do pliku .js, który przechowuje nagłówek // @flow.

Wejście JSON

{
  "id": 42,
  "name": "Ada Lovelace",
  "email": null,
  "active": true,
  "score": 98.5,
  "tags": ["admin", "dev"],
  "address": { "city": "London", "postCode": "NW1" }
}

Typy przepływów

// @flow
export type IRootObject = {
  id: number
  name: string
  email: null
  active: boolean
  score: number
  tags: string[]
  address: IAddress
}
export type IAddress = {
  city: string
  postCode: string
}

Szczegóły i ograniczenia

Działa w przeglądarce z biblioteką json-ts, a wynik jest sformatowany za pomocą Prettier; nic nie jest przesyłane.

Flow nie ma przestrzeni nazw, dlatego strona udostępnia tylko prefiks i nazwę główną. Wynik zawsze zawiera deklaracje export type na najwyższym poziomie.

Wartości null są wpisywane jako null, a puste tablice jako any[]. Zmień je na typy, takie jak ?string, jeśli pole może przechowywać wartość.

Dane wyjściowe używają niedokładnych typów obiektów i nie zawierają $ReadOnly; dodaj {| |} lub opakowania tylko do odczytu, jeśli wymaga tego Twój projekt.

FAQ

W jaki sposób wykrywane są pola opcjonalne?

Tylko z tablic obiektów: brak klucza w niektórych elementach staje się opcjonalny, na przykład giftWrap?: boolean. Klucze najwyższego poziomu nigdy nie są opcjonalne, ponieważ pojedynczy obiekt nie ma innej próbki do porównania.

Czy mogę przekonwertować tablicę JSON w katalogu głównym?

Tak. Korzeń staje się aliasem tablicy, takim jak typ eksportu IRootObject = IRootObjectItem[], a typ elementu łączy klucze wszystkich elementów, przy czym brakujące klucze są oznaczone jako opcjonalne.

Czy obsługuje tablice typu mieszanego?

Tak, płaska tablica, np. ["a", 2], staje się (string | number)[]. Zagnieżdżone tablice stają się any[].

Specyfikacje i referencje