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ć
- Wklej obiekt JSON do edytora.
- 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.
- 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[].