Convertitore da JSON a tipi Flow — Numio
Genera alias di tipo Flow da un campione JSON, iniziando con // @flow. Ogni oggetto nidificato ottiene il proprio tipo esportato e le chiavi mancanti in alcuni elementi dell'array sono contrassegnate come facoltative con ?.
Digitando le risposte API in una codebase React o React Native che utilizza ancora Flow.
JSON
Flow
Quando usarlo
- Digitando le risposte API in una codebase React o React Native che utilizza ancora Flow.
- Scrittura di tipi per dispositivi o dati simulati in una suite di test con controllo del flusso.
Come si usa
- Incolla un oggetto JSON nell'editor.
- Aprire le impostazioni per modificare il prefisso (predefinito I) e il nome radice (predefinito RootObject); il tipo root diventa IRootObject e i tipi nidificati ottengono lo stesso prefisso.
- Copia i tipi esportati in un file .js che conserva l'intestazione // @flow.
Ingresso JSON
{
"id": 42,
"name": "Ada Lovelace",
"email": null,
"active": true,
"score": 98.5,
"tags": ["admin", "dev"],
"address": { "city": "London", "postCode": "NW1" }
}Tipi di flusso
// @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
}Dettagli e limiti
Viene eseguito nel browser con la libreria json-ts e il risultato è formattato con Prettier; non viene caricato nulla.
Flow non ha spazi dei nomi, quindi la pagina offre solo prefisso e nome radice; l'output è sempre una dichiarazione del tipo di esportazione di livello superiore.
i valori null vengono digitati come null e gli array vuoti come any[]. Cambiateli magari in tipi come ?string quando il campo può contenere un valore.
L'output utilizza tipi di oggetto inesatti e nessun $ReadOnly; aggiungi {| |} o wrapper di sola lettura se il tuo progetto li richiede.
FAQ
Come vengono rilevati i campi facoltativi?
Solo negli array di oggetti: una chiave assente in alcuni elementi diventa facoltativa, ad esempio giftWrap?: boolean. Le chiavi al primo livello non sono mai facoltative, perché un solo oggetto non offre un altro campione da confrontare.
Posso convertire un array JSON alla radice?
Sì. La radice diventa un alias di array, come export type IRootObject = IRootObjectItem[], e il tipo degli elementi unisce le chiavi di tutti gli oggetti, segnando come facoltative quelle assenti in alcuni.
Gestisce array di tipo misto?
Sì, un array semplice come ["a", 2] diventa (string | number)[]. Gli array annidati diventano any[].